【问题标题】:Expanding variables in a Windows batch file在 Windows 批处理文件中展开变量
【发布时间】:2015-02-27 23:05:06
【问题描述】:

我在 Windows 批处理文件中运行以下命令:

start "" "C:\PDF Viewer\PDFXCview.exe" /A "page=1&zoom=33.3" "G:\my pdfs\file 1.pdf" /A "page=4&zoom=55.5" "G:\my pdfs\file 2.pdf"

工作正常,并使用各自的参数打开两个 PDF 文件。但是,为了使过程更清晰,我想开始使用变量来代替 PDF 文件(甚至是 PDF 查看器可执行文件)。但是,当我使用变量时,只会打开第一个 PDF 文件:

set PDF1="G:\my pdfs\file 1.pdf"
set PDF2="G:\my pdfs\file 2.pdf"
start "" "C:\PDF Viewer\PDFXCview.exe" /A "page=1&zoom=33.3" %PDF1% /A "page=4&zoom=55.5" %PDF2%

我应该提到,如果我删除 /A 命令和每个文件的后续参数,我不会遇到这个问题。

【问题讨论】:

    标签: batch-file command-line-arguments batch-processing command-prompt


    【解决方案1】:

    set 命令中的引用错误。使用set "variable=value"语法如下:

    set "PDF1=G:\my pdfs\file 1.pdf"
    set "PDF2=G:\my pdfs\file 2.pdf"
    start "" "C:\PDF Viewer\PDFXCview.exe" /A "page=1&zoom=33.3" "%PDF1%" /A "page=4&zoom=55.5" "%PDF2%"
    

    【讨论】:

    • 这应该没什么区别。 sets 在整个变量周围加上引号会保留空格而不包括引号,而他的保留空格并包含引号的方式。
    • @SomethingDark,我理解你的逻辑,这也是我认为这可以正常工作的原因。但是 JosefZ 的解决方案确实解决了这个问题。 JosefZ,您介意解释一下为什么您的方式有效,而我的方式无效吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    相关资源
    最近更新 更多