Batch file 更改批处理文件中的当前工作目录是最佳做法吗?
我有一个批处理文件,通过传递某些参数调用一个应用程序 这是我的sample.batch文件的内容Batch file 更改批处理文件中的当前工作目录是最佳做法吗?,batch-file,command,working-directory,Batch File,Command,Working Directory,我有一个批处理文件,通过传递某些参数调用一个应用程序 这是我的sample.batch文件的内容 cd C:\Program Files\MyApplication "C:\Program Files\MyApplication\Application.exe" -e -p "Application Projects/Testing/General/Notepad" -rm "Close Notepad" 在这里,我需要将当前工作目录更改为Application.exe所在的文件夹,以便它找到
cd C:\Program Files\MyApplication
"C:\Program Files\MyApplication\Application.exe" -e -p "Application Projects/Testing/General/Notepad" -rm "Close Notepad"
在这里,我需要将当前工作目录更改为Application.exe所在的文件夹,以便它找到位于该文件夹中的某些必需JAR。这样做是否最佳做法?在执行批处理文件之前更改当前工作目录。请尝试
pushd C:\Program Files\MyApplication
...
popd
作为另一种选择
最佳实践是意见和环境的问题试试看
pushd C:\Program Files\MyApplication
...
popd
作为另一种选择
最佳实践是一个意见和环境的问题一种方法是我们已经提出的:
pushd "%ProgramFiles%\MyApplication"
rem Other commands.
popd
此解决方案甚至适用于启用了命令扩展名的UNC路径,默认情况下为PUSHD临时将网络共享映射到驱动器号,并使此网络驱动器成为当前目录
另一种解决方案是使用SETLOCAL、CD和ENDLOCAL,其优点是所有环境变量的修改,setlocal
和endlocal
之间的命令执行的命令扩展和延迟扩展对于endlocal
命令行之后的命令并不重要
setlocal EnableExtensions DisableDelayedExpansion
cd /D "%ProgramFiles%\MyApplication"
rem Other commands running in their own environment, here running with command
rem extensions explicitly enabled and delayed expansion explicitly disabled.
endlocal
命令ENDLOCAL还将当前目录还原为执行SETLOCAL时设置的目录
有关PUSHD(推送目录)、POPD(pop目录)、SETLOCAL(设置本地环境)、CD(更改目录)和ENDLOCAL(结束本地环境)的详细信息,请参见上的答案
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
cd/?
endlocal/?
rem/?
setlocal/?
popd/?
pushd/?
- 一种方法是我们已经提出的:
pushd "%ProgramFiles%\MyApplication"
rem Other commands.
popd
此解决方案甚至适用于启用了命令扩展名的UNC路径,默认情况下为PUSHD临时将网络共享映射到驱动器号,并使此网络驱动器成为当前目录
另一种解决方案是使用SETLOCAL、CD和ENDLOCAL,其优点是所有环境变量的修改,setlocal
和endlocal
之间的命令执行的命令扩展和延迟扩展对于endlocal
命令行之后的命令并不重要
setlocal EnableExtensions DisableDelayedExpansion
cd /D "%ProgramFiles%\MyApplication"
rem Other commands running in their own environment, here running with command
rem extensions explicitly enabled and delayed expansion explicitly disabled.
endlocal
命令ENDLOCAL还将当前目录还原为执行SETLOCAL时设置的目录
有关PUSHD(推送目录)、POPD(pop目录)、SETLOCAL(设置本地环境)、CD(更改目录)和ENDLOCAL(结束本地环境)的详细信息,请参见上的答案
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
cd/?
endlocal/?
rem/?
setlocal/?
popd/?
pushd/?
cd
具有有用的/d
参数pushd
/popd
是另一个选项。注意,cd
具有有用的/d
参数pushd
/popd
是另一个选项。