【发布时间】:2015-09-13 19:49:40
【问题描述】:
我有一个我正在循环的文件列表,这些文件与某个大小的字母(A、B、C、D)匹配。这些文件的格式为###T####A###_# rev 1.dxf,其中 rev 1 仅在某些时候存在,A 指的是大小,即 A、B、 C 或 D。当我尝试在一组 D.dxf 或 B.dxf 中循环这些文件时,还会发现一些 A 文件。我目前使用模式?????????A*.dxf,但希望将其扩展到更多文件类型,而不必制作多个批处理文件。有趣的是,如果我使用模式 TA*.dxf,通配符的行为正常。
为什么会发生这种情况,我该如何解决它,同时仍要捕获 A 可能位于开头、结尾、中间等位置的文件?如果您需要任何说明或额外信息,请随时提出。
这是我的相关代码:
FOR %%S IN (A,B,C,D) DO (
echo Converting size %%S. . .
FOR %%F in ("%filepath%\?????????%%S*.dxf") DO (
echo Converting %%~nxF to PDF, size %%S
SET %%S=!%%S! "%%~pF%%~nF.pdf"
"C:\Program Files\AutoDWG\AutoDWG DWG to PDF Converter\d2p.exe" /InFile %%~fF /OutFile %%~nF.pdf /Watermark %~dp0%%Swatermark.wdf /InConfigFile %~dp0%%S.ddp
)
echo:
echo Combining %%Ss. . .
pdftk !%%S! cat output "%filepath%\print\%%Ss.pdf"
echo Combined
echo:
)
编辑:我在 32 位 Windows XP 上运行它。这和this thread?有关系吗?我回家再调查。
编辑 2:我现在已经找出问题所在。当我有多个具有相同开头字符的文件时,8.3 短名称包含一个十六进制数字,它可能与我正在搜索的字母之一匹配。如何在我的 for 循环中丢弃短名称匹配?
【问题讨论】:
标签: windows batch-file cmd wildcard