應該是,但批處理對SET
語句中的空格敏感。 SET FLAG = N
設置一個名爲「FLAG 空間」變量的「空間 N」
語法SET "var=value"
(其中值可以是空的)用於確保任何雜散尾部空格不包括在所述值的值分配。 set /a
可以安全地使用「無引號」。
當文件或目錄名稱中有空格時,這很重要。
我建議一些細微的變化:
@echo off
setlocal
SET "start_dir=%cd%"
cd ..
cd apps
SET "apps_dir=%cd%"
SET "my_dir=%apps_dir%\MY_DIR"
cd "C:\projects\ConsoleApplication1\src\ConsoleApplication1\bin\Debug"
ConsoleApplication1.exe -i -f "%my_dir%"
cd "%start_dir%"
注意到
關閉@echo關閉命令回顯批處理期間
SETLOCAL確保任何環境當批次結束時,所做的更改將被撤消,所以您不會遇到之前運行所做更改的陳舊數據問題
CD 「destinationdir」 - 引號是不通常需要,即使 「在路徑中的空間」,但可能需要爲奇怪的路徑名(如含&
那些)
「%MY_DIR%」作爲參數爲consoleapplication1,以確保它視爲一個單一的令牌
如果consoleapplication1.exe
是在路徑上的目錄,那麼就沒有必要cd
到該目錄;命令consoleapplication1 ....
將訪問它。當然,如果應用程序提供了一個不合格的文件名,然後它會假設該文件是在current
目錄,而不是executable
的目錄,所以有可能需要切換目錄...
如果consoleapplication1.exe
位於不在路徑上的目錄中,則"C:\projects\ConsoleApplication1\src\ConsoleApplication1\bin\Debug\consoleapplication1" ....
將訪問它。如果包含引號,則引號是無害的,但對於完整可執行文件名稱中的空格而言是必需的。
path
從提示符中將顯示執行路徑;每個目錄用分號分隔。
有可能使用
@echo off
setlocal
SET "start_dir=%cd%"
pushd ..\apps
SET "apps_dir=%cd%"
SET "my_dir=%apps_dir%\MY_DIR"
pushd "C:\projects\ConsoleApplication1\src\ConsoleApplication1\bin\Debug"
ConsoleApplication1.exe -i -f "%my_dir%"
popd
popd
其中pushd
切換到指定的目標目錄當前保存在一個簡單的堆棧。 popd
從堆棧中彈出目錄。