2011-06-20 25 views
2

有我們的網絡中的病毒,設置所有根目錄的USB閃存驅動器的屬性隱藏&系統,並創建LNK-文件,該運行cmd.exe的,病毒本身並然後打開目錄,因此,來解決這樣的驅動器我用命令:蝙蝠文件:命令只改變文件夾屬性不遞歸

attrib -s -h -r /d /s 
del /q /s *.lnk 
rd /q /s recycler 

但有一個問題:命令「ATTRIB -s -h -r/d/s的」過程中的所有文件及子目錄,如果有其中很多都需要很長時間(它看起來像Windows首先創建完整文件列表,然後開始處理所有內容)。

有一個蝙蝠文件僅處理目錄而不是文件,而不是遞歸的可能性?

在Perl:

opendir D, '.'; 
while($_ = readdir D){ 
    if(-d $_){ 
     #do something 
     } 
    } 
closedir D; 

謝謝。

- UPD:2012-01-31,解決方法:

for /f "delims=" %i in ('dir /ad /ah /b') do @attrib -r -s -h -a "%i" 

+0

如果病毒隻影響根目錄,爲什麼要處理所有的文件和目錄? –

+0

因爲attrib命令不能像「只從當前目錄中獲取目錄」那樣使用過濾器,所以我問了這個問題。 –

回答

4

使用FOR命令,使用DIR輸出作爲工作列表。

例如在開始使用此:

attrib /s /d 
    SHR  C:\a\a.1 
    SHR  C:\a\a.2 
    SHR  C:\a\a.3 
    SHR  C:\a 
    SHR  C:\b 
    SHR  C:\c 
    SHR  C:\d 
A   C:\x.txt 
A   C:\y.txt 
A   C:\z.txt 

其中a,b,c,d爲目錄和子目錄的擁有。鍵入此命令(記得要用%%,如果你把在一個批處理文件):

for /f %i in ('dir /ad /ah /b') do @attrib -r -s -h %i 

哪位能給你想要的東西:

attrib /s /d 
    SHR  C:\a\a.1 
    SHR  C:\a\a.2 
    SHR  C:\a\a.3 
      C:\a 
      C:\b 
      C:\c 
      C:\d 
A   C:\x.txt 
A   C:\y.txt 
A   C:\z.txt 

從你的問題,我的理解是處理子目錄應該避免。如果沒有,評論我的答案,我會解決它。

+0

FOR/D%i IN(\ *)DO ...'也可能工作得很好(考慮到OP的聲明,病毒僅命中根目錄)。 –

+0

是的,確實如此。但是,由於他的示例perl腳本打開了'。',我也從當前目錄開始工作。 – ixe013

+0

非常感謝。這是一個小的更正:for/f %%我在('dir/ad/ah/b')做@attrib -r -s -h %% i –

0

(與%%我在批處理文件中使用替換%I)我相信,你不能在簡單的批處理文件中用attrib命令執行你想要的操作。雖然我不熟悉它,如果這是一個嚴重的和長期的問題(病毒=我真的希望不是),你可能想看看PowerShell的,因爲它可以提供的功能(和更好的可編程),您需要。

+0

我知道,這是不可能的attrib,也許有可能得到目錄列表與FOR? –

+0

我想到了這一點,但我能想到的最好的東西很像@ ixe013剛剛發佈的[upvoted],我認爲它可能與「全面掃描」一樣慢,因爲它仍然必須直接在硬盤上直接瀏覽。儘管如此,試試看(讓我們知道結果?),看看它是否比暴力方法更好。 –

4

所以有點晚期,但我們只是有同一病毒的新變種襲擊我們的系統 - 坐進了300多個文件夾共享驅動器。把一切都清理了,但得到的屬性後,我做了以下內容:

的文件夾中打開一個命令提示符,然後運行: DIR/A:DHS/B> FILENAME.TXT

的「/ A: DHS」輸出的只有* d * irectory的名單,是* ^h * idden和* 小號 * ystem,然後輸出* *的信息,以FILENAME.TXT

複製列表將該文件中的文件夾名稱轉換爲excel列B.在列 「ATTRIB -H -S」 並將其向下拖動到匹配的文件夾名稱

的數目A型然後在列C放入:= A1 & 「」 & CHAR(34)& B1 & CHAR(34)

此輸出到: ATTRIB -H -S「的文件夾名」

然後只需拖動式向下以獲得每個文件夾名的命令。全部選中 - 複製 - 粘貼到記事本中 - 將文件保存爲.cmd - 將文件放入問題所在的文件夾並運行。

因爲它不會試圖遞歸地執行任何事情/ etc它只是運行命令,移動到下一行等等。花了大約3秒爲我修復超過300個文件夾。