【发布时间】:2020-08-04 20:23:49
【问题描述】:
我更像是一个 bash 家伙,然后是批处理,我正在努力理解为什么这个通配符不起作用。我有一个批处理文件来打印文档,但我想使用通配符来修改版本号。
例如:这行得通:
@ECHO OFF
CLS
ECHO PRINTING HR PACKAGE
PAUSE
SET PDF_DS_P=call "Print_PDF_Double_Sided.cmd"
SET PWD=\Orientation Package\HR\
SET F1="%PWD%HR Docs\HR Welcome (rev02.00).pdf"
%PDF_DS_P% %F1%
Double_Sided.CMD
%PRINTCMD% "%~1" "\\%SERVER%\%SHARE%"
但如果我执行以下操作,它会破坏脚本:
SET F1="%PWD%HR Docs\HR Welcome (rev*).pdf"
【问题讨论】:
-
在 bash 中,通配符自动扩展为一系列文件,并对每个文件执行一个命令。在批号在批处理中,您必须通过
FOR命令显式扩展通配符,然后使用 FOR 参数执行所需的命令:for %%f in (rev*.pdf) do %PDF_DS_P% "%PWD%HR Docs\HR Welcome (%%~Nf).pdf" -
让我们看看 - 9 行什么都不做和 1 行混淆命令。
-
有趣的是 Aacini 是如何回答这个问题的@user12341753
标签: batch-file wildcard