2014-12-13 136 views
1

我对批处理文件编程完全陌生,所以我在这里有点失落,无论如何,这是可行的吗?具有特定扩展名的批处理文件打印文件

我在c:\myfolder txt文件,pdf,xls,蝙蝠和其他。我想有一个循环来找出所有不属于PDF,或TIF或BAT文件,并且在这种情况下,我会运行一个命令到该文件转换为PDF,用这个命令:

C:\PDFCreator\PDFCreator.exe /PrintFile="C:\myFolder\theFileNameToConvert" 

转换可能需要约10秒至20中的更大的文件

感谢 情况下,卡洛斯

回答

1
for /f "delims=" %%a in ('dir /b /a-d *') do if /i "%%~xa" neq ".pdf" if /i "%%~xa" neq ".tif" if /i "%%~xa" neq ".bat" C:\PDFCreator\PDFCreator.exe /PrintFile="C:\myFolder\%%~na" 

应该做你想要的东西 - 只要你的C:\PDFCreator\PDFCreator.exe命令是正确的 - 这似乎指定printfile但不酸ce文件。

for /f读取dir /b /a-d(目录列表,基本[仅文件名])的每一行,并将每个行依次指定为变量%%a%%~xa表示扩展名,所以三个级联的if表示如果(/ i =大小写不敏感)文件“%% a”的扩展名为NotEQual,则表示土豆,然后执行下一个测试。通过所有NotEQual测试,然后执行PDFCreator命令,使用%%~na - 文件%%a中仅名称部分。

+0

我很确定'PDFCreator'需要'%% a'(名称和扩展名),而不是'%%〜na'(仅限名称)。否则,它怎么可能找到文件? – dbenham 2014-12-13 14:12:11

1

在命令行中,假设当前目录是`“C:\ MyFolder文件”:

for /f "eol=: delims=" %F in ('dir /b /a-d^|findstr /live ".pdf .tif .bat"') do C:\PDFCreator\PDFCreator.exe /PrintFile="%F" 

增加一倍。如果在一个批处理文件中的百分比:(我也格式化跨多行的代码更容易查看)

@echo off 
pushd "c:\myFolder" 
for /f "eol=: delims=" %%F in (
    'dir /b /a-d^|findstr /live ".pdf .tif .bat"' 
) do C:\PDFCreator\PDFCreator.exe /PrintFile="%%F" 
popd 
+0

'findstr/live'很好。我喜欢。 – Endoro 2014-12-13 13:18:12

+1

@Endoro - 也有'/邪恶'和'/邪恶' – dbenham 2014-12-13 14:08:32

+0

谢谢。这很好。 – Carlos 2014-12-14 10:33:16

相关问题