我正在嘗試寫一個存在於任意目錄中的批處理文件,並且會在它上面創建一個新的目錄。例如,批處理文件在這裏:批處理文件目錄擴展
w:\src\project\scripts\setup.bat
將創建:
w:\src\project.build
我似乎無法弄清楚如何擴大的路徑。這是我目前在做什麼:
@set SCRIPT_DIR=%~dp0
@set ROOT_DIR=%SCRIPT_DIR%\..
echo ROOT DIR: %ROOT_DIR%
@set ROOT_DIR_NAME=%ROOT_DIR:~0,-1%
@echo ROOT DIR NAME: %ROOT_DIR_NAME%
並且這產生:
ROOT DIR: w:\src\w_dev1\scripts\\..
ROOT DIR NAME: w:\src\w_dev1\scripts\\.
我想做的事,就是讓ROOT_DIR_NAME是目錄本身(不帶斜線)。我知道我可以破解這個,並切換-1來說明'..',但是有沒有一種更清晰的方式來處理這個問題?
是否有必要'PUSHD%SCRIPT_DIR%',因爲你已經在腳本目錄開始(正確嗎?)?在我的簡單測試腳本中,這不是必要的,但也許我不知道在這裏玩的陷阱。 – Pat 2012-06-04 23:06:32
@Pat:您需要'pushd%script_dir%',因爲您可能正在從另一個目錄運行腳本。例如從'w:\ src'中的命令提示符處,您可以運行'project \ scripts \ setup.bat'。此外,快捷方式有「目標」和「開始」屬性,並且「開始」目錄不必與目標批處理文件具有相同的目錄... – Grhm 2012-10-04 12:04:39