我正在尝试写一个存在于任意目录中的批处理文件,并且会在它上面创建一个新的目录。例如,批处理文件在这里:批处理文件目录扩展
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