我有一個目錄D:\ test中的文件列表,我想通過使用批處理文件添加一個前綴BLA_到每個文件的每行d:\測試。在此過程之後,可以將文件移動到D:\ test \ processed \,並且文件名也應該更改爲BLA_file名稱。批處理文件:添加前綴到目錄中所有文件的所有行
這聽起來並不困難,但我沒有設法創建一個工作批處理文件。希望可以有人幫幫我!
在此先感謝!
我有一個目錄D:\ test中的文件列表,我想通過使用批處理文件添加一個前綴BLA_到每個文件的每行d:\測試。在此過程之後,可以將文件移動到D:\ test \ processed \,並且文件名也應該更改爲BLA_file名稱。批處理文件:添加前綴到目錄中所有文件的所有行
這聽起來並不困難,但我沒有設法創建一個工作批處理文件。希望可以有人幫幫我!
在此先感謝!
建議用sed:
sed -i "s/^/BLA_/" D:\Test\*
for %%a in (D:\Test\*) do move "%%~a" "D:\test\processed\BLA_%%~a"
@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
被用來避免空行跳過),將帶有前綴的行回顯到輸出文件中。
嗨MC ND。謝謝!我使用了你的代碼(只改變了delims;因爲分隔符是分號),現在文件的第一列被BLA_取代,而不是這個前綴被添加到第一列(所以BLA_hello如果hello曾經是第一列) 。任何建議如何我可以改變這一點? – Hans
@Hans,爲了避免空行刪除(默認'for'行爲),'findstr'用於計算行。要從內容中拆分數字,冒號被用作行號(var %% b)和行內容(var %% c)之間的分隔符。當您將其更改爲分號時,代碼無法分隔這兩個值,因此所有內容(和數字)都會進入%% b。但是代碼輸出是%% c,所以,沒有內容 –
你是對的,太棒了!非常感謝! – Hans
嗨Endoro。感謝您的回答。由於它在商業終端服務器上,我不確定我是否應該安裝Windows的sed。沒有使用sed還有一個簡單的方法嗎? – Hans