2017-05-11 60 views
1

我有一个批处理文件,我通过传递某些参数来调用一个应用程序。更改批处理文件中的当前工作目录是否是最佳做法?

这里是我的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生活,让它发现它位于某些必须的jar文件夹内容最好的做法是在执行批处理文件之前更改当前的工作目录。

+2

注,'cd'有有用的'/ D'参数。 'pushd' /'popd'是另一种选择。 – Stephan

回答

2

一种方法是什么MagooStephan建议已经:

pushd "%ProgramFiles%\MyApplication" 

rem Other commands. 

popd 

这种解决方案甚至因为默认情况下启用了命令扩展UNC路径如PUSHD临时将网络共享映射到一个驱动器号,并将此网络驱动器设置为当前目录。

另一种解决方案是使用SETLOCALCDENDLOCAL其中有环境变量,命令扩展的所有修改的优势和setlocalendlocal之间的命令进行延迟扩展没有为命令没关系经过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执行被设置。

参见change directory command cd ..not working in batch file after npm install的回答更多的细节有关PUSHD(推目录),POPD(弹出目录),SETLOCAL(设置本地环境),CD(更改目录)和ENDLOCAL(结束当地环境)。

为了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • cd /?
  • endlocal /?
  • rem /?
  • setlocal /?
  • popd /?
  • pushd /?
4

尝试

pushd C:\Program Files\MyApplication 
... 
popd 

的另一种选择。

最好的做法是双方的意见和环境的问题

相关问题