我想在批处理文件中执行以下操作:
我想打开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。我希望这一点没有任何批处理错误消息。
答案 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:\
驱动器。