如何使用带有路径的“开始”和带有空格的命令在 Windows 中创建批处理文件
Posted
技术标签:
【中文标题】如何使用带有路径的“开始”和带有空格的命令在 Windows 中创建批处理文件【英文标题】:How to create batch file in Windows using "start" with a path and command with spaces 【发布时间】:2010-09-09 12:23:50 【问题描述】:我需要创建一个批处理文件,它可以在 Windows .cmd 文件中启动多个控制台应用程序。这可以使用启动命令来完成。
但是,该命令中有一个路径。我还需要传递也有空格的参数。如何做到这一点?
例如批处理文件
start "c:\path with spaces\app.exe" param1 "param with spaces"
【问题讨论】:
【参考方案1】:start "" "c:\path with spaces\app.exe" "C:\path parameter\param.exe"
当我使用上述建议时,我得到了:
'c:\path' 不是内部或外部命令、可运行程序或批处理文件。
我认为第二个引号会阻止命令运行。经过以下解决方案的一些搜索,节省了我的一天:
start "" CALL "c:\path with spaces\app.exe" "C:\path parameter\param.exe"
【讨论】:
创建一个空文件test 2.bat
,然后用这个START "Test title" "test 2.bat" %*
创建一个文件test1.bat
- 现在运行test1.bat "param 1"
,它不会工作,为什么?【参考方案2】:
用撇号转义路径是正确的,但启动命令需要一个包含新窗口标题的参数。此参数由周围的撇号检测,因此您的应用程序不会执行。
试试这样的:
start "Dummy Title" "c:\path with spaces\app.exe" param1 "param with spaces"
【讨论】:
【参考方案3】:我研究成功,对我来说效果很好。我的要求是使用需要从 Windows 中的批处理文件调用的 vbscript 发送电子邮件。这是我使用的准确命令,没有错误。
START C:\Windows\System32\cscript.exe "C:\Documents and Settings\akapoor\Desktop\Mail.vbs"
【讨论】:
这是错误的。你可以写START "" "C:\Documents and Settings\akapoor\Desktop\Mail.vbs"
。您的代码之所以有效,是因为 vbs 是一个扩展,当您“启动”它时它就会被解析。尝试使用路径调用notepad.exe,它不会工作。它会一直执行脚本。【参考方案4】:
有趣的是,在 Windows Embedded Compact 7 中,您似乎无法指定标题字符串。第一个参数必须是命令或程序。
【讨论】:
【参考方案5】:你要使用这样的东西:
开始 /d C:\Windows\System32\calc.exe
开始 /d "C:\Program Files\Mozilla
Firefox" firefox.exe 启动 /d
"C:\Program Files\Microsoft
Office\Office12" EXCEL.EXE
另外我建议你使用特殊的批处理文件编辑器 - Dr.Batcher
【讨论】:
【参考方案6】:实际上,他的例子是行不通的(虽然一开始我也认为它会)。根据 Start 命令的帮助,第一个参数是新创建的命令提示符窗口的名称,第二个和第三个应该分别是应用程序及其参数的路径。如果您在应用程序的路径之前添加另一个“”,它应该可以工作(至少它对我有用)。使用这样的东西:
start "" "c:\path with spaces\app.exe" param1 "param with spaces"
您可以将第一个参数更改为您希望新命令提示符的标题。如果是创建的 Windows 应用,则不会显示命令提示符,标题也无所谓。
【讨论】:
看起来窗口标题是强制性的,尽管互联网上有很多文档另有说明。忽略该文档。听从安迪的建议。 如果我从交互式输入 Windows 应用程序命令,应用程序会在后台启动,并且我会看到一个新提示。如果我从批处理脚本运行相同的命令,应用程序会在前台启动;我的批处理脚本停止,直到我退出应用程序。哎呀!我尝试了很长时间使用 start 在后台运行我的应用程序,但start /B "app"
不起作用,start cmd /C "app"
给了我一个无关的控制台。谢谢!!我终于知道我的非窗口启动需要一个窗口标题。这有效:start /B "" "app"
谢谢!即使指定了/wait
参数,情况也是如此! start /wait "%CDir%\cron.exe" -q -remove
不起作用,而 start "" /wait "%CDir%\cron.exe" -q -remove
起作用。
如果我稍后能找到你的答案它可以节省我的时间((。但无论如何thanx!【参考方案7】:
在路径和参数周围加上引号内的空格,就像您的示例一样。该命令可能需要在参数传递给它时处理引号,但这通常没什么大不了的。
【讨论】:
以上是关于如何使用带有路径的“开始”和带有空格的命令在 Windows 中创建批处理文件的主要内容,如果未能解决你的问题,请参考以下文章
如何将带有空格的路径作为参数添加到 CreateProcess 批处理文件?