Windows命令:如何使用chdir推送当前目录以便以后弹出?

时间:2015-12-11 15:57:37

标签: windows batch-file command-line cmd command

上下文/目的:

在Windows 7中,我正在使用常规的Windows命令开发批处理脚本。在这个批处理中,我需要首先保存当前目录,以便在脚本完成运行时恢复它。

我为此尝试过:

我尝试使用chdir,pushd和popd命令使其正常工作。

  • 尝试1:

    PUSHD CHDIR

    REM主要脚本正文

    POPD

    PUSHD线上的

    结果:错误“系统无法找到指定的路径”

  • 尝试2:

    SET curdir = CHDIR

    PUSHD%curdir%

    REM主要脚本正文

    POPD

    结果: PUSHD线上出现相同错误“系统无法找到指定的路径”

  • 其他尝试:谷歌搜索也没有产生任何令人满意的结果。

问题:

我可以使用这些命令使其工作吗? 或者我需要使用另一组命令吗?

注意:我正在寻找仅使用Windows本机命令的解决方案,第三方工具或PowerShell不是一种选择。

3 个答案:

答案 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