Windows批处理作业在所有具有文件名的行之前

时间:2016-11-21 00:11:26

标签: windows batch-file

我有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

1 个答案:

答案 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

您需要更改sourcedirdestdir的设置以适合您的具体情况。

我使用了R*.txt的文件掩码来限制在我的测试系统上处理的文件数。

基本上,使用dir命令构建文件名列表,并依次将每个文件分配给%%a

%%a的每一行读入%%q并输出到目标目录中的新文件,该文件由%%a%%~na)和{{的名称部分组成1}}

---稍后

要将文件的名称部分添加到文件的每一行,请更改

.out

   ECHO (%%a^)%%q

ECHO %%~na%%q 选择%%~na N ame部分(有关详细信息,请参阅提示中的%%a