2014-03-31 39 views
0

我有一個目錄D:\ test中的文件列表,我想通過使用批處理文件添加一個前綴BLA_到每個文件的每行d:\測試。在此過程之後,可以將文件移動到D:\ test \ processed \,並且文件名也應該更改爲BLA_file名稱。批處理文件:添加前綴到目錄中所有文件的所有行

這聽起來並不困難,但我沒有設法創建一個工作批處理文件。希望可以有人幫幫我!

在此先感謝!

回答

0

建議用

sed -i "s/^/BLA_/" D:\Test\* 
for %%a in (D:\Test\*) do move "%%~a" "D:\test\processed\BLA_%%~a" 
+0

嗨Endoro。感謝您的回答。由於它在商業終端服務器上,我不確定我是否應該安裝Windows的sed。沒有使用sed還有一個簡單的方法嗎? – Hans

0
@echo off 

    setlocal enableextensions disabledelayedexpansion 

    set "inputFolder=d:\test" 
    set "outputFolder=%inputFolder%\processed" 

    for %%a in ("%inputFolder%\*" 
    ) do (for /f "tokens=1,* delims=:" %%b in (
     'findstr /n "^" "%%~fa" ^& del /q "%%~fa" ^>nul 2^>nul' 
    ) do (echo BLA_%%c))>"%outputFolder%\BLA_%%~nxa" 

    endlocal 

對於輸入文件夾的每個文件,讀取輸入文件,刪除輸入的文件和用於在所選擇的輸入文件的每行(findstr /n被用來避免空行跳過),將帶有前綴的行回顯到輸出文件中。

+0

嗨MC ND。謝謝!我使用了你的代碼(只改變了delims;因爲分隔符是分號),現在文件的第一列被BLA_取代,而不是這個前綴被添加到第一列(所以BLA_hello如果hello曾經是第一列) 。任何建議如何我可以改變這一點? – Hans

+0

@Hans,爲了避免空行刪除(默認'for'行爲),'findstr'用於計算行。要從內容中拆分數字,冒號被用作行號(var %% b)和行內容(var %% c)之間的分隔符。當您將其更改爲分號時,代碼無法分隔這兩個值,因此所有內容(和數字)都會進入%% b。但是代碼輸出是%% c,所以,沒有內容 –

+0

你是對的,太棒了!非常感謝! – Hans

相關問題