批量删除第一行,为每行添加文件名并合并TXT文件

时间:2015-11-17 19:53:03

标签: windows batch-file cmd prompt

我有一堆TXT文件(近两百个),我需要执行以下任务:

  1. 从每个文件中删除第一行文字;
  2. 将文件名(不带扩展名)添加到文件中每个剩余行的开头;
  3. 将所有内容合并为一个TXT文件。
  4. 我知道以下命令将进行合并:

      

    对于(* .txt)中的%f,请键入“%f”>> output.txt的

    这个将预定义的文本添加到单个txt文件中每行的开头:

      

    (对于/ f“delims =”%L in(filename.txt)do @echo sometext%L)>>   output.txt的

    有关如何使其发挥作用的任何建议?所有帮助表示赞赏。提前谢谢。

3 个答案:

答案 0 :(得分:3)

此方法消除第一行,保留空行并插入文件名。我认为它也应该跑得更快:

@echo off
setlocal EnableDelayedExpansion

set "file="
(for /F "tokens=1* delims=:" %%a in ('findstr "^" *.txt') do (
   if "%%a" neq "!file!" (
      set "file=%%a"
   ) else (
      echo %%~Na:%%b
   )
)) > output.tmp
REM ren output.tmp output.txt

输出文件.txt扩展名命名,以避免重新处理其内容。

答案 1 :(得分:0)

假设您正在从cmd提示符处执行此操作。如果要从批处理文件运行它,请将百分号加倍。

for %F in (*.txt) do for /f "skip=1 usebackq delims=" %L in ("%~F") do echo %~nF%L>> output.txt

如果你需要它保持空的或空白的填充行,第二个for循环会改变为此。

FOR /F "skip=1 tokens=1* delims=:" %L in ('findstr /N /R "^" "%~F"') do echo %~nF%M>> output.txt

答案 2 :(得分:0)

这会删除空行,但也会删除第一行并将文件名添加到每一行:

@echo off
>Output.txt (
for %%f in (*.txt) do (
  for /f "delims=" %%l in ('more +1 %%f') do (
    echo %%f:%%l
  )
))