バッチファイル内の%~dp0 パス参照の違い
背景:
バッチ ファイル内で、%~dp0 はバッチ ファイルの現在の場所のディレクトリ パスを表します。現在のディレクトリ (CD) を変更する場合、通常、%~dp0 の値が新しいディレクトリを反映するように更新されることが予想されます。
質問:
ただし、ユーザーは、C# プログラムを通じてバッチ ファイルを実行するときの %~dp0 の動作の違いを観察しています。 %~dp0 は、直接実行すると元の値を保持しますが、C# から呼び出すと変更されます。
分析:
この違いは、バッチ ファイルが引用符で呼び出されたときの %~0 (未変更のバッチ ファイル名) の処理方法によるものです。
解決策:
この問題を解決するには、次の 2 つの方法をお勧めします:
C# コードから:
ProcessStartInfo.FileName = "mybatfile.bat";
バッチ ファイルから:
<code class="language-batch">@echo off setlocal enableextensions disabledelayedexpansion call :getCurrentBatch batch echo %batch% exit /b :getCurrentBatch variableName set "%~1=%~f0" goto :eof</code>
以上がバッチ ファイルが直接実行された場合と C# 経由で実行された場合とで、%~dp0 が異なる結果をもたらすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。