Batch file 文件名/路径中的批处理通配符无效

Batch file 文件名/路径中的批处理通配符无效,batch-file,wildcard,Batch File,Wildcard,我更喜欢bash,而不是batch,我很难理解为什么这个通配符不起作用。我有一个批处理文件来打印文档,但我想通配符修订号 例:这是有效的: @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

我更喜欢bash,而不是batch,我很难理解为什么这个通配符不起作用。我有一个批处理文件来打印文档,但我想通配符修订号

例:这是有效的:

@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%
双面.CMD

%PRINTCMD% "%~1" "\\%SERVER%\%SHARE%"
但如果我执行以下操作,它会破坏脚本:

SET F1="%PWD%HR Docs\HR Welcome (rev*).pdf"

在bash中,通配符自动扩展为一系列文件,并对每个文件执行命令。在批次号中。在批次中,必须通过FOR命令显式展开通配符,然后使用FOR参数执行所需的命令:

@ECHO OFF
CLS

ECHO PRINTING HR PACKAGE
PAUSE

SET PDF_DS_P=call "Print_PDF_Double_Sided.cmd"
SET PWD=\Orientation Package\HR\

for %%f in (rev*.pdf) do (
   %PDF_DS_P% "%PWD%HR Docs\HR Welcome (%%~Nf).pdf"
)

在bash中,通配符自动扩展为一系列文件,并对每个文件执行命令。在批次号中。在批次中,必须通过FOR命令显式展开通配符,然后使用FOR参数执行所需的命令:

@ECHO OFF
CLS

ECHO PRINTING HR PACKAGE
PAUSE

SET PDF_DS_P=call "Print_PDF_Double_Sided.cmd"
SET PWD=\Orientation Package\HR\

for %%f in (rev*.pdf) do (
   %PDF_DS_P% "%PWD%HR Docs\HR Welcome (%%~Nf).pdf"
)
转换为函数,但立即注意到一个警告(我没有调试,因为我可以接受)

警告:这发现了第一个字母数字结果,如果有多个文件,这将是最糟糕的选择,我想要最后一个字母数字结果。请随意添加一个更好的答案进行投票

@ECHO OFF
setlocal enabledelayedexpansion
CLS

SET PWD="C:\tmp
set  RevFile=%PWD%\Rev*.pdf"
ECHO %RevFile%
CALL :FINDFILEWILDCARD %RevFile% RevFile

:FINDFILEWILDCARD
for %%f in (%~1) do (
 SET %2="%%~f"
 EXIT /B
)

ECHO %RevFile%
PAUSE
转换为函数,但立即注意到一个警告(我没有调试,因为我可以接受)

警告:这发现了第一个字母数字结果,如果有多个文件,这将是最糟糕的选择,我想要最后一个字母数字结果。请随意添加一个更好的答案进行投票

@ECHO OFF
setlocal enabledelayedexpansion
CLS

SET PWD="C:\tmp
set  RevFile=%PWD%\Rev*.pdf"
ECHO %RevFile%
CALL :FINDFILEWILDCARD %RevFile% RevFile

:FINDFILEWILDCARD
for %%f in (%~1) do (
 SET %2="%%~f"
 EXIT /B
)

ECHO %RevFile%
PAUSE

在bash中,通配符自动扩展为一系列文件,并对每个文件执行命令。在批次号中。在批次中,必须通过
FOR
命令显式展开通配符,然后使用FOR参数执行所需命令:
FOR%%f In(rev*.pdf)do%pdf\u DS\u P%%%PWD%HR Docs\HR Welcome(%%~Nf).pdf”
让我们看看-9行不做任何事情的命令和一行模糊的命令。有趣的是,Aacini能够回答这个问题question@user12341753Inbash通配符自动扩展为一系列文件,并对每个文件执行命令。在批次号中。在批次中,必须通过
FOR
命令显式展开通配符,然后使用FOR参数执行所需命令:
FOR%%f In(rev*.pdf)do%pdf\u DS\u P%%%PWD%HR Docs\HR Welcome(%%~Nf).pdf”
让我们看看-9行不做任何事情的命令和一行模糊的命令。有趣的是,Aacini能够回答这个问题question@user12341753