2016-11-21 36 views
0

我有50個文本文件,每個文本文件有大約6000行。我正在尋找一個批處理作業,將文件名附加到文本文件的每一行。Windows批處理作業在文件名前面的所有行之前

我有一個批處理作業,以將數據追加到每行,但不能滿腦子都得到文件名

這是我迄今爲止

@echo off 
setLocal EnableDelayedExpansion 
for /f "tokens=* delims= " %%a in (input.txt) do (
set /a N+=1 
echo ^"(my filename)%%a^",>>output.txt 
) 

---例

文件名3315.txt

124123541234 
1234123 
2345623462356234 
12341234562356245 

期望的最終結果

3315124123541234 
33151234123 
33152345623462356234 
331512341234562356245 
+0

......除非我失去了一些東西change'my filename'to'input.txt' – Compo

+0

沒有我不想要手動鍵入文件名50次..文件名會每次都會有所不同。 – user3369895

+0

你已經將它輸入到括號中,有什麼區別?讓我改寫一下......不管你把上面的括號放在下面的括號裏! – Compo

回答

1
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "destdir=U:\destdir" 

FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\R*.txt" ' 
) DO (
(
    FOR /f "usebackqdelims=" %%q IN ("%sourcedir%\%%a") DO (
    ECHO (%%a^)%%q 
) 
)>"%destdir%\%%~na.out" 
) 

GOTO :EOF 

你需要改變的sourcedirdestdir設置以適合你的情況。

我用R*.txt的文件掩碼來限制在我的測試系統上處理的文件數量。

本質上,使用dir命令構建文件名列表,並依次將每個文件分配給%%a

%%a每一行到%%q,並輸出到由的%%a%%~na)和.out

名稱部分的目標目錄的新文件---後來

預先設置名稱文件到文件的每一行的一部分,改變

ECHO (%%a^)%%q 

ECHO %%~na%%q 

%%~na選擇的%%añ AME一部分(見for /f|more從提示獲取更多信息)

+1

這個和類似的解決方案的一個小問題是''for/f'命令完全忽略了輸入文件中的空白行。 –

+0

@KlitosKyriacou:的確如此。沒有例子,我們只能推測。 – Magoo

+0

文件不會有任何空行 – user3369895

相關問題