2016-03-04 56 views
2

我使用腳本掃描整個用戶的驅動器C中的特定文件,然後將結果記錄在網絡上的txt文件中。它像一個魅力。在批處理文件上使用驅動器號

這是腳本:

@echo off 

pushd C:\ 
dir /s /a-d "setup.txt" /s "setup2.txt" >nul && (goto printresult) || (goto notfound) 

:printresult 
dir /s /a-d setup.txt /s setup2.txt >>"\\servidor\pastadelogs\FOUND_%computername%.txt 
popd 
exit 

:notfound 
echo "Este PC não possui os arquivos" >>"\\servidor\pastadelogs\NOTFOUND_%computername%.txt 
popd 
exit 

現在我需要改進它,使它掃描USB驅動器內爲好。我已經有一個代碼,這將使我的USB字母:

@echo off 
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype 2^>NUL`) do (

    if %%l equ 2 (
    echo %%i is a drive letter 

     ) 
     ) 

我的2個問題是:

  • 我可以使用它們在一起嗎?
  • 如果有多個USB插頭會怎麼樣?它將如何工作?我可以爲每個驅動器號結果設置1個變量嗎?

問候

回答

1

被處理,因爲該任務也被掃描慢USB媒體則是明智的建立一個檔案,在第一輪結果,並且只要type數據到目標文件,如果有結果,而不是再次掃描。

這是未經測試,將檢查可移動和本地磁盤(不包括A:和B :)

編輯

它使用選擇什麼驅使等不包括的方法(在FINDSTR命令):如驅動器號和驅動器類型號,並且ID刪除標題。

@echo off 
set "file=%temp%\drivescan.tmp" 
for /f "tokens=1,2" %%a in ('wmic logicaldisk get deviceid^,drivetype^|findstr /i /v "a: b: 0 1 4 5 6 ID"') do (
    echo Processing drive %%a 
    (dir /b /s /a-d "%%a\setup.txt" "%%a\setup2.txt")>"%file%" 2>nul 
    for %%d in ("%file%") do if %%~zd NEQ 0 (
     type "%file%" >> "\\servidor\pastadelogs\FOUND_%computername%.txt" 
     ) else (
     echo "[%%a] Este PC não possui os arquivos">>"\\servidor\pastadelogs\NOTFOUND_%computername%.txt" 
    ) 
    del "%file%" 2>nul 
) 

下面是我用Google搜索驅動器類型的列表:

wmic logicaldisk where drivetype=2 get deviceid, volumename, description 

Types 

0 => Unknown 
1 => No Root Directory 
2 => Removable Disk 
3 => Local Disk 
4 => Network Drive 
5 => Compact Disc 
6 => RAM Disk 
+0

這比我的工作好得多,你是對的,它比掃描設備好兩倍。當驅動器A上沒有光盤時,仍然出現錯誤。我正在運行vmware機器上的測試。你認爲有可能排除A和B驅動器嗎?另外,C驅動器的結果出現了兩次,不是這是一個大問題。問候。 –

+0

此外,如果它可以避免顯示任何錯誤彈出窗口,它會很好。謝謝! –

+0

@LuizGustavoBatista代碼現在應該排除a:和b:並且確保在運行測試之前刪除目標文件。驅動器c:應該只按照我的理解掃描一次。 – foxidrive

0
@echo off 
for /f %%i in ('wmic logicaldisk where "drivetype=2" get caption^|find ":"') do (
    pushd %%i 
    dir /s /a-d "setup.txt" /s "setup2.txt" >nul && (
     dir /b /s /a-d setup.txt /s setup2.txt >>"\\servidor\pastadelogs\FOUND_%computername%.txt" 
    ) || (
     echo "[%%i] Este PC não possui os arquivos" >>"\\servidor\pastadelogs\NOTFOUND_%computername%.txt" 
    ) 
    popd 
) 

這會爲每一個USB驅動器

+0

謝謝你,但我得到了一個錯誤說有驅動器A中沒有磁盤是否有可能包括C盤,每USB和排除所有其他? (CD,DVD等)。由於這將以無聲方式完成,因此我無法在屏幕上彈出任何錯誤消息。我感謝您的幫助。 –

+0

計算機可能擁有的另一個分區,除了網絡驅動器...非常感謝! –

+0

再次在這裏運行測試我發現它發現了C:內的文件,但它沒有掃描USB。結果出現兩次,如下所示: C:\ Users \ gi-tecso \ Dropbox \ 2-Gustavo \ LUGUTA \ SOFTWARES \ SCRIPTS \ setup.txt C:\ Users \ gi-tecso \ Dropbox \ 2 -Gustavo \ LUGUTA \ SOFTWARES \ SCRIPTS \ setup.txt –

相關問題