首页 > 解决方案 > 有没有办法从批处理中更改文件夹并在执行后留在那里?

问题描述

我想从终端运行一个批处理文件,一旦这个批处理文件结束执行,我希望终端位于批处理文件的当前目录中,知道吗?

我想执行一个批处理文件并得到这样的输出:

C:\Temp> batch_file
Moving prompt to another route
C:\Folder1\Files>

标签: windowsbatch-filecmd

解决方案


对问题有了更好的理解后,答案完全改变了。

我明白请求是

  1. 从某个目录开始的终端调用命令,例如c:\temp
  2. 批处理文件blarg.bat被执行
  3. blarg.bat在不同的目录中做东西,例如c:\temp\a\b\c
  4. 希望终端现在在c:\temp\a\b\c脚本退出时

我很惊讶这会产生什么影响......

我被教导总是将脚本包装在SETLOCAL/ENDLOCAL中以保持变量的本地化,并且它可以允许某种程序类型调用。

所以我从这个开始:

@ECHO OFF
SETLOCAL

    ECHO Starting at %CD%

    CD "c:\temp\a\b\c"
    ECHO Now at %CD%
    ECHO:
    ECHO This is where other stuff would be done
    ECHO:

(ENDLOCAL
 EXIT /B 0)

期望这将以"C:\temp\a\b\c". 但它没有。

所以我删除了 setlocal/endlocal 包装。

@ECHO OFF

ECHO Starting at %CD%

CD "c:\temp\a\b\c"
ECHO Now at %CD%
ECHO:
ECHO This is where other stuff would be done
ECHO:

现在它给出了预期的结果

c:\TEMP>blarg.bat
Starting at c:\TEMP
Now at c:\TEMP\a\b\c

This is where other stuff would be done

c:\TEMP\a\b\c>

因此,似乎只要cd在全局范围内,它就会将终端留在该级别。但是,在全球范围内存在风险脚本。


推荐阅读