cmd.exe / k开关

我正在尝试使用cmd切换到一个目录,然后执行一个batch file

例如

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

我也尝试过(没有成功)

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

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

Solutions Collecting From Web of "cmd.exe / k开关"

正确的语法是:

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

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

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

或者,为什么不运行cmd /kc:\myfolder\startbatch.bat ,然后在.bat文件中执行cd c:\myfolder

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

例:

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

我把这个作为答案,因为我在评论中看到了这个问题,不能评论。

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

作品,如果你有空间:

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

据我所知,该命令传递给cmd为"cd "c:\myfolder" & startbatch.bat" ,然后将其分解为cd "c:\myfolder" & startbatch.bat ,此时剩余的" "照顾字符串的路径。

您也可以使用&&||| 取决于你想要达到什么。

我看不到一个解决这个问题的答案,所以如果任何人需要访问名称中有空格的目录,可以添加额外的引号

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