2012-11-14 23 views
-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。我希望在批處理中沒有任何錯誤消息。

+0

您使用的代碼有什麼問題?或者您是否在嘗試檢測USB驅動器何時插入? –

回答

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行驅動器,因爲第一行是列標題和第二行99%肯定是您沒有包含在腳本中的C:\驅動器。

+0

謝謝你的回覆,但我想要這個:例如,我有這個批處理文件和pdf文件啓動.bat後,PDF拷貝到臨時文件夾。如果我在桌面上使用.bat(NOT ON USB),它必須從臨時文件夾(如果USB沒有插入)啓動pdf。如果插入了usb,從任何目的地啓動pdf。 - – GM12221222

相關問題