我有50个文本文件,每个文本文件大约有6000行。我正在寻找一个批处理作业,将文件名附加到文本文件的每一行。
我有一个批处理作业将数据附加到每一行但是无法绕过获取文件名
这是我到目前为止所拥有的
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (input.txt) do (
set /a N+=1
echo ^"(my filename)%%a^",>>output.txt
)
---示例
filename 3315.txt
124123541234
1234123
2345623462356234
12341234562356245
期望的最终结果
3315124123541234
33151234123
33152345623462356234
331512341234562356245
答案 0 :(得分: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
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了R*.txt
的文件掩码来限制在我的测试系统上处理的文件数。
基本上,使用dir
命令构建文件名列表,并依次将每个文件分配给%%a
。
将%%a
的每一行读入%%q
并输出到目标目录中的新文件,该文件由%%a
(%%~na
)和{{的名称部分组成1}}
---稍后
要将文件的名称部分添加到文件的每一行,请更改
.out
到
ECHO (%%a^)%%q
ECHO %%~na%%q
选择%%~na
的 N ame部分(有关详细信息,请参阅提示中的%%a
)