当传递的参数带有引号时使用 DOS 启动命令

gia*_*ora 5 windows command-line batch-file

我有一个关于 DOS 启动命令的问题。\n我已经阅读过此主题:\n使用 DOS \xe2\x80\x9cstart\xe2\x80\x9d 命令并将参数传递给启动的程序\n使用“start”命令并将参数传递给启动的程序

\n\n

但我的问题有点不同。

\n\n

我有这个问题:我需要传递需要引用的路径。

\n\n

例如,如果路径没有引号,则效果很好:

\n\n

启动“”app.exe -选项c:\\ myapp \\ myfile.txt

\n\n

但如果路径有双引号,则不起作用。

\n\n

我的批处理文件中有这一行:

\n\n

启动“” myapp.exe -选项 %mypath%

\n\n

当 %mypath% 包含双引号(名称中包含空格或其他字符的路径)时,启动命令会返回非常奇怪的结果。

\n\n

谢谢\n桑德罗

\n

Nar*_*nan 1

这可能会有所帮助,但方法有点绕,可能需要稍微修改才能满足您的需要。

这个想法是:

  1. 将带有引号的环境变量转储到具有预定义名称的文本文件中。就像:“set mypath2 > withQt.bat”
  2. 使用 Windows Power shell或某些第三方工具查找并替换该文件中的引号。
  3. 创建另一个包含字符串“Set”的文本文件(仅一个时间步骤)
  4. 使用复制命令将步骤 2 中提到的文件附加到步骤 3 中创建的文件,并创建一个具有预定义名称的批处理文件。例如:复制base.bat + withQt.bat withtqt.bat
  5. 运行批处理文件,该文件将创建另一个环境变量/用不带引号的值替换环境变量。

抱歉,我现在找不到更优雅的东西。