如何完成我的批处理文件代码?

时间:2012-11-14 22:48:06

标签: windows batch-file batch-processing

我想在批处理文件中执行以下操作:

我想打开pdf,如果它存在于usb上。如果此文件不存在,请从其他位置启动pdf(如果存在)。

e.g。

:: Searchs USB Drive Letter
For %%I In (G,D,E,F,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) Do If Exist "%%I:\Document1.pdf" (

xcopy /H /Y /C /R "%%I:\Document1.pdf" "%tmp%"
start %tmp%\Document1.pdf
)

如果要插入,我想打开pdf文档(来自USB)。一旦这个.bat启动,并且usb将被插入,从temp文件夹启动pdf。我希望这一点没有任何批处理错误消息。

1 个答案:

答案 0 :(得分:1)

根据您发布的内容,我只能猜测您在插入USB驱动器时是否尝试运行批处理文件?

我很确定没有本地方法可以批量执行此操作,因此我只建议您在批处理中使用无限循环并始终保持运行,以检测任何插入的内容。

:LOOP
:: Searchs USB Drive Letter
For %%I In (G,D,E,F,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) Do (
    If Exist "%%I:\Document1.pdf" (
    xcopy /H /Y /C /R "%%I:\Document1.pdf" "%tmp%"
    start %tmp%\Document1.pdf
    )
)
REM Use timeout /t 5 instead of ping if you have Vista or above
ping 127.0.0.1 -n 5
goto :LOOP

而不是循环所有可能的驱动器号,我建议改为将for循环更改为此,因此它只查看当前存在的驱动器

for /f "skip=2 delims=" %%I in ('wmic logicaldisk get caption') do (

我已跳过前两行,因为第一行是列标题,第二行是99%肯定是您未在脚本中包含的C:\驱动器。