cmd
我正在尝试使用命令、开关运行一系列命令/k
,并&&
分隔序列中的每个命令。
例如,我想运行此命令更改到一个文件夹,然后更改到下一个:
cmd /k "cd C:\Program Files\Microsoft Office" && "cd C:\Program Files\Windows Mail"
但这不起作用 - 它仅将文件夹更改为 Microsoft Office,然后停止。
我该如何完成这件事?
编辑:
实际上,@señor-csmasmas 是正确的 - 我之前的示例并没有真正说明问题。
当我运行路径中包含空格的命令,后跟更改目录的命令时,问题实际上就会出现。
例如,如果您创建一个复制文件的bat文件(我们称之为copyfile.bat),并将该bat文件放置在带有空格的文件夹中,然后调用cmd命令,如下所示:
C:\windows\system32\cmd.exe /k "C:\Test Folder\copyfile.bat" && "cd C:\Some Other Folder"
您将看到当前目录没有更改为 C:\Some Other Folder。
// 编辑
编辑 //
尝试想象一下您的命令和运算符在单引号中必要时在双引号之间的样子
cmd /k "command "with" operator and another command "with""
Windows之前是DOS,再之前是CP/M。
CP/M 通常只运行单个命令。
DOS 越来越有能力将 CPU 使用量分配给单独的进程,因此您可以使用自己的环境从主级别运行辅助 command.com。
因此Windows继承了对多种方式调用命令进程的需求,因此3个主交换机仍然存在。
新的块是 cmd.exe,它默认的行为与 /K (保持活动)相同,您可以退出回到当前的 cmd 级别,这就是您的问题
然而,我们经常想让 cmd 运行并返回控制台控制并继续,这样就是
/c
那么第三个是什么?没有列出来!
所以 /c 和 /r 是同义词,都充当运行和继续
好吧,这是一个转移,没有回答可能类似于此问题的问题,即一行中的命令在使用之前运行(非延迟执行)
我们预计 %CD% 会报告 c:\users,但显然不是
所以对于你的回答
您想要移动到另一个位置并启动新的 Konsole,那么您需要更改顺序和方法
你有
所以这有效(可能有点矫枉过正?)
cmd /c start " " cmd /r "cd /d "c:\program files" && cmd /k" && cd /d "c:\users"
我们启动一个将 /run 的辅助进程
cd
,/k
然后我们更改为另一个 cwd,它也应该以相反的方式工作所以尝试这个答案
可选地添加一个
&& dir
以在测试期间进行验证如果您想要的是两个像这样的独立控制台
然后使用这个命令