2016-11-21 23 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

相关问题