-2

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

我想打开 pdf,如果它存在于 USB 上。如果此文件不存在,则从另一个位置启动 pdf(如果存在)。

例如

:: 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 后,从临时文件夹启动 pdf。我希望这在批处理中没有任何错误消息。

4

1 回答 1

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:\您未包含在脚本中的驱动器。

于 2012-11-15T08:46:18.120 回答