-2

バッチファイルで次のことをしたい:

USBに存在する場合、pdfを開きたいです。このファイルが存在しない場合は、別の場所から 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 (

最初の 2 行はスキップしました。1 行目は列のタイトルで、2 行目はC:\スクリプトに含まれていないドライブであることが 99% 確実だからです。

于 2012-11-15T08:46:18.120 に答える