2011-10-06 33 views
0

我是一個批處理新手,所以請接受我的道歉,並提前致謝!Windows批處理文件:根據輸入文件(目標文件名)重命名文件(可能在多個文件夾中)

這個「工具」是通過禁用某些系統驅動程序,DLL和EXE文件來自動化Windows(XP)的減肥。我不希望徹底刪除,而是希望重新命名,從而將它們從操作系統中「刪除」,但不會丟失它們所屬的位置(如果需要「恢復」的話)。重命名是通過向現有文件名添加新後綴來實現的(例如:「wdmaud.drv.group_1」)重命名後綴應該是另一個輸入變量。

目標列表大約是。長1100個文件(分成不同的組/階段),所以手動重命名是不可能的。每個組將在批處理文件的單獨運行中處理,爲每次執行更改目標列表輸入文件。

目標列表是純文本文件,每行一個文件名(文件中沒有其他數據)。每組的條目數量不同。目標列表如下所示:

-- example start -- 
    netapi.dll 
    netcfgx.dll 
    netdde.exe 
    netevent.dll 
    neth.dll 
    netid.dll 
    netrap.dll 
    nic1394.sys 
    -- example end -- 

文件名可能位於UPPER,lower或MiXeD的情況。這些文件可能存在於C:\ Windows分層結構中的多個文件夾中,或根本不存在。如果在系統的任何地方找不到文件,則應將其名稱寫入文本文件,每行一行。

感興趣的特定文件夾爲:

C:\WINDOWS\ 
    C:\WINDOWS\system\ 
    C:\WINDOWS\system32\ 
    C:\WINDOWS\system32\dllcache 
    C:\WINDOWS\system32\drivers 

重命名將由目標OS驅動器連接到另一臺XP計算機上完成,所以鎖定的系統文件不應該是一個問題。

任何幫助你可以提供將不勝感激。

+0

您可能會在超級用戶 –

+0

上得到更多回復感謝Martin ......得到的建議比迄今爲止的更少。 – cMP

回答

1

FOR迴路可以幫助你..這是一個很簡單的例子,只是爲了讓你開始

for /f "tokens=*" %%f in (%targetlist%) do (
    for /f "tokens=*" %%d in (%dirlist%) do (
    if exist "%%d\%%f" echo %%f found in %%d 
) 
) 

看到HELP FOR

+0

謝謝PA!它需要改進,但它似乎盡我所需(...直到我想到更多!) – cMP

相關問題