windows - 有没有办法从批处理中更改文件夹并在执行后留在那里?
问题描述
我想从终端运行一个批处理文件,一旦这个批处理文件结束执行,我希望终端位于批处理文件的当前目录中,知道吗?
我想执行一个批处理文件并得到这样的输出:
C:\Temp> batch_file
Moving prompt to another route
C:\Folder1\Files>
解决方案
对问题有了更好的理解后,答案完全改变了。
我明白请求是
- 从某个目录开始的终端调用命令,例如
c:\temp
- 批处理文件
blarg.bat
被执行 blarg.bat
在不同的目录中做东西,例如c:\temp\a\b\c
- 希望终端现在在
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
在全局范围内,它就会将终端留在该级别。但是,在全球范围内存在风险脚本。
推荐阅读
- python - 即使发生错误,Python如何继续读取输出
- vba - 循环访问 Access 记录集提供了不正确的计数
- html - 细字符的像素与请求的颜色不完全相同
- haskell - 如何制作一个基本上只在 Haskell 中存储列表的数据结构
- javascript - Angular - 在另一个数组中的数组中查找给定值
- libreoffice-basic - Libre office Basic 宏忽略了我添加到文件夹路径中的最后一个文件夹
- java - java.sql.SQLRecoverableException:IO 错误:网络适配器无法建立连接
- python - 无法在 gspread 中插入二维数组
- python - Pyomo:如何在 while 循环中创建具有不同名称的变量?
- python - 将字典中的字典中的字典中的浮点数转换为int in 字典中的列表