CMD连续命令脚本问题:如何在新CMD窗口执行cd并输出目录
嘿,我完全懂你碰到的这个坑!你本来想让新打开的CMD窗口自己切到指定目录,然后输出当前路径,结果echo却在原来的窗口跑了,新窗口啥也没显示对吧?这是因为你没把要执行的命令传递给新启动的CMD进程,而是让父脚本直接执行了这些命令。
正确的解决方法
你需要把切换目录和输出的命令打包成字符串,作为参数传给cmd.exe,这样这些操作才会在新窗口里执行。给你两种常用的写法:
1. 保持新CMD窗口打开(适合调试)
用/k参数,它会让CMD执行完命令后保持窗口不关闭:
start cmd.exe /k "cd /d c:\ && echo 当前目录:%cd%"
这里的细节:
start用来启动独立的新CMD进程(也就是新窗口)/d是cd命令的参数,确保跨盘符切换也能生效(比如从D盘切到C盘)&&用来串联命令,只有前面的cd执行成功,才会运行后面的echo
2. 执行后自动关闭窗口
如果不需要保留窗口,把/k换成/c就行,执行完命令窗口会自动关闭:
start cmd.exe /c "cd /d c:\ && echo 当前目录:%cd%"
为啥你之前的写法没效果?
举个例子,如果你之前写的是这种:
start cmd.exe cd c:\ echo %cd%
那cd和echo都是在原来的脚本进程里执行的,和新打开的CMD窗口是完全独立的两个进程,新窗口根本不知道这些命令。哪怕你加了括号,比如:
start cmd.exe (cd c:\ && echo %cd%)
这也不对,括号里的内容还是父进程的命令,没有传递给新CMD。必须把命令放在引号里,作为/k或/c的参数,才能让新CMD自己执行这些操作。
内容的提问来源于stack exchange,提问作者Dudi Frid
相关产品推荐
相关产品推荐

