cmd.exe /k 开关

问题描述 投票:0回答:7

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

例如

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

我也尝试过(没有成功)

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

虽然第一行(cmd /k)似乎运行正常,但第二条命令从未运行。我使用 Vista 作为操作系统

windows command-line cmd
7个回答
63
投票

正确的语法是:

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

11
投票

ssg 已经发布了正确答案。我只会将 /d 开关添加到

cd
命令(例如
cd /d drive:\directory
)。这可以确保命令在当前目录与您想要 cd 到的目录位于不同驱动器上时有效。


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

或者,为什么不运行

cmd /k c:\myfolder\startbatch.bat
,并在 .bat 文件中执行
cd c:\myfolder


3
投票

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

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 工具的访问权限。


1
投票

您可以使用

&
&&
作为 Windows 中的命令分隔符。

示例:

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

1
投票

我给出这个作为答案,因为我在评论中看到这个问题,但还不能发表评论。

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
,此时剩余的
" "
将路径作为字符串处理。

您还可以根据您想要实现的目标使用

&&
|
||


0
投票

对于任务计划程序:

设置 价值
程序/脚本
cmd
添加参数(可选)
/k somecommand "C:\Users\SomeUser\Some Folder With Spaces"
© www.soinside.com 2019 - 2024. All rights reserved.