批次檔中的%~dp0路徑引用差異
背景:
在批次檔中,%~dp0表示批次檔目前位置的目錄路徑。變更目前目錄 (CD) 時,通常預期%~dp0的值會更新以反映新目錄。
問題:
但是,使用者觀察到透過C#程式執行批次檔時%~dp0的行為有差異。當直接執行時%~dp0保留其原始值,而從C#中呼叫時則會變更。
分析:
這種差異是由於當用引號呼叫批次檔時,%~0(未修改的批次檔名)的處理方式造成的。
解:
為了解決這個問題,建議採用兩種方法:
從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中文網其他相關文章!