我有一堆TXT文件(近两百个),我需要执行以下任务:
我知道以下命令将进行合并:
对于(* .txt)中的%f,请键入“%f”>> output.txt的
这个将预定义的文本添加到单个txt文件中每行的开头:
(对于/ f“delims =”%L in(filename.txt)do @echo sometext%L)>> output.txt的
有关如何使其发挥作用的任何建议?所有帮助表示赞赏。提前谢谢。
答案 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
)
))