上下文/目的:
在Windows 7中,我正在使用常规的Windows命令开发批处理脚本。在这个批处理中,我需要首先保存当前目录,以便在脚本完成运行时恢复它。
我为此尝试过:
我尝试使用chdir,pushd和popd命令使其正常工作。
尝试1:
PUSHD CHDIR
REM主要脚本正文
POPD
PUSHD线上的结果:错误“系统无法找到指定的路径”
尝试2:
SET curdir = CHDIR
PUSHD%curdir%
REM主要脚本正文
POPD
结果: PUSHD线上出现相同错误“系统无法找到指定的路径”
其他尝试:谷歌搜索也没有产生任何令人满意的结果。
问题:
我可以使用这些命令使其工作吗? 或者我需要使用另一组命令吗?
注意:我正在寻找仅使用Windows本机命令的解决方案,第三方工具或PowerShell不是一种选择。
答案 0 :(得分:7)
您可以使用.
来表示当前的指令。
试试这个:
PUSHD .
REM The rest of you script
POPD
答案 1 :(得分:3)
你的问题是你需要使用CD
命令(而不是CHDIR)并且不要忘记将它包装在%的..通常认为它们是相同的,但它们确实如此以这种方式略有不同。
在批处理文件中尝试以下示例:
@echo off
echo Initial directory set to:
cd "%UserProfile%\Desktop"
echo `%cd%`
echo.
pushd %CD%
echo Changing to %AppData%
REM main script body
cd /D %AppData%
echo `%cd%`
echo.
echo Changing to %LocalAppData%
cd /D %LocalAppData%
echo `%cd%`
echo.
echo.
echo About to POPD
pause
POPD
echo `%cd%`
echo.
我应该注意@ aphoria的答案同样有效。
答案 2 :(得分:1)
@aphoria和@wasatchwizard的工作解决方案。希望我能将两者都标记为答案。谢谢你们两个!
我正在为那些遇到同样问题的人整合它们。
选项1:
PUSHD .
REM main scripts body
POPD
选项2:
PUSHD %cd%
REM main scripts body
POPD