【问题标题】:How to finish my batch file code?如何完成我的批处理文件代码?
【发布时间】:2012-11-14 22:48:06
【问题描述】:

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

我想打开 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。我希望这在批处理中没有任何错误消息。

【问题讨论】:

  • 您使用的代码有什么问题?或者您是否尝试检测 USB 驱动器何时插入?

标签: windows batch-file batch-processing


【解决方案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:\ 驱动器。

【讨论】:

  • 感谢您的回复,但我想要这个:例如,我有这个带有 pdf 文档的批处理文件启动 .bat 后,PDF 复制到临时文件夹。如果我有 .bat 例如在桌面上(不在 USB 上),它必须从临时文件夹启动 pdf(如果未插入 USB)。如果插入了 USB,则从任何目的地启动 pdf。 ——
猜你喜欢
  • 2015-10-14
  • 2011-02-04
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
  • 2012-12-25
  • 2017-05-16
  • 2022-11-16
相关资源
最近更新 更多