cmd.exe / k开关

时间:2012-01-03 14:44:25

标签: windows command-line cmd

我正在尝试使用cmd切换到目录,然后执行批处理文件

e.g。

cmd /k cd "C:\myfolder"
startbatch.bat

我也尝试过(没有成功)

cmd cd /k cd "C:\myfolder" | startbatch.bat

虽然第一行(cmd / k)似乎运行正常,但第二个命令永远不会运行。我使用Vista作为操作系统

6 个答案:

答案 0 :(得分:45)

正确的语法是:

cmd /k "cd c:\myfolder & startbatch.bat"

答案 1 :(得分:8)

ssg已经发布了正确答案。我只会添加/ d切换到cd命令(例如cd /d drive:\directory)。这样可以确保命令在当前目录与您要cd到的目录不同的驱动器上运行。

答案 2 :(得分:2)

cmd cd /k "cd C:\myfolder; startbatch.bat"

或者,为什么不在.bat文件中运行cmd /k c:\myfolder\startbatch.batcd c:\myfolder

答案 3 :(得分:1)

您可以在Windows中使用&&&作为命令分隔符。

示例:

cmd cd /K "cd C:\myfolder && startbatch.bat"

答案 4 :(得分:0)

我将此作为答案,因为我在评论中看到了这个问题,但尚无评论。

cmd /k "cd c:\myfolder & startbatch.bat"

有效,如果你有空格:

cmd /k "cd "c:\myfolder" & startbatch.bat"

根据我的理解,该命令将作为"cd "c:\myfolder" & startbatch.bat"传递给cmd,然后将其分解为cd "c:\myfolder" & startbatch.bat,此时剩余的{{1}将路径作为字符串来处理。

您还可以使用" "&&|,具体取决于您希望实现的目标。

答案 5 :(得分:0)

我无法找到解决此问题的答案,因此如果有人需要访问名称中包含空格的目录,您可以添加其他引号,例如

cmd.exe /K """C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"" & powershell.exe"

从PowerShell中你需要使用反引号`

来转义引号
cmd.exe /K "`"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat`" & powershell.exe"

注意转义的引号

`"

在路径字符串中:

"`"C:\my path\`""

这将在cmd中执行正确的命令,即包含引号的路径应该有效。

上面的示例命令将初始化MSVC开发人员命令提示符并返回PowerShell,继承环境并授予对MSVC工具的访问权。