如何使用 cmd 和 & 符号运行带有空格的多个命令?

如何使用 cmd 和 & 符号运行带有空格的多个命令?

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。

答案1

// 编辑

当我运行路径中带有空格的命令,然后运行更改目录的命令时,问题实际上就出现了。

例如,如果你创建一个复制文件的 bat 文件(我们称之为 copyfile.bat),并将该 bat 文件放在带空格的文件夹中,然后像这样调用 cmd 命令:

C:\windows\system32\cmd.exe /k "C:\Test Folder\copyfile.bat" && "cd > C:\Some Other Folder"

:: try :: 
C:\windows\system32\cmd.exe /k "call "C:\Test Folder\copyfile.bat" && cd /d "C:\Some Other Folder""

编辑 //


cmd /k "cd "C:\Program Files\Microsoft Office" && cd "C:\Program Files\Windows Mail""

尝试想象一下你的命令和操作符在必要时用双引号括起来的样子cmd /k "command "with" operator and another command "with""

cmd /k "

       cd /d "C:\Program Files\Microsoft Office" 
       && 
       cd /d "C:\Program Files\Windows Mail"

       "

cmd /k " command "path #1" && command "path #2" "

答案2

Windows 之前是 DOS,之前是 CP/M。

CP/M 通常只运行单个命令。

DOS 逐渐拥有了为不同进程划分 CPU 使用率的能力,因此你可以在主级别运行具有自己环境的辅助命令。

因此,Windows 继承了对几种调用命令进程的方式的需求,因此 3 个主开关仍然存在。

command.com 应该死了
在此处输入图片描述

新来的孩子是 cmd.exe,它的默认行为与 /K 相同(保持活动状态),您可以退出回到当前 cmd 级别这是你的问题

在此处输入图片描述

然而我们经常想让 cmd 运行并返回C鞋底C控制 &C继续这样/c

那么第三个是什么?它没有列出!

在此处输入图片描述

在此处输入图片描述

所以 /c 和 /r 是同义词,都充当运行和继续

好的,这只是一个转移话题,并没有回答可能与此问题类似的问题,即一行中的命令在使用前运行(非延迟执行)

在此处输入图片描述

我们可以预期 %CD% 会报告 c:\users,但显然没有

所以你的回答

如果你想移动到另一个位置并启动一个新的 Konsole,那么你需要更改顺序和方法

你有

cmd /k "cd C:\Program Files\Microsoft Office" && "cd C:\Program Files\Windows Mail"

因此,这是有效的(可能有点过度?)

在此处输入图片描述

cmd /c start " " cmd /r "cd /d "c:\program files" && cmd /k" && cd /d "c:\users"

我们启动一个将运行的辅助进程cd/k然后切换到另一个 cwd,反过来也应该可以工作

所以尝试这个答案

start "Office Dir" cmd /k "cd C:\Program Files\Microsoft Office" && cd "C:\Program Files\Windows Mail"

可选择添加 && dir 在测试期间进行验证

如果你想要的是两个像这样的独立控制台 在此处输入图片描述

然后使用此顺序

cd /d "C:\Program Files\Microsoft Office" && start "office" cmd /k && cd /d "C:\Program Files\Windows Mail" && start "Mail" cmd /k

相关内容