高手进!求bat批处理,多TXT文本文件提取、合并、重命名?详细见问题补充。

问题一:(TXT文本文件提取)
一个文件夹目录下有n个TXT文本文件,批量提取每个TXT文本文件前m行,合并为新的TXT文本文件。(注意:提取过的TXT文本文件前m行删除,不留空行,保存)。例如我要提取同一目录所有TXT文本前5行,如何写呢?
问题二:(TXT文本文件合并)
1、合并两个TXT文本文件,是行对行合并,不是单纯的两个TXT文本合并。以两个TXT文本文件最少行为基准,多余行不合并,空行也不合并。举例:1.txt 有50行,2.txt 有100行。在1.txt没有空行的情况下 合并新的TXT文本就应该是50行。
2、合并后的新TXT文本文件,保留每行前230字符,后面多余去除。
问题三:(文件重命名)
1、一个文件夹目录下有n个文件(类型不限),根据该目录下的1.txt,逐行给该目录下有n个文件重命名(保留原文件名,即把1.txt每行的内容添加到原文件名后,形成新的文件名)
2、如果该新文件名字符数超过260,自动按照最长文件名(好像是260个字符吧)保存。
问题四:
有四个TXT文本文件,1.txt 2.txt 3.txt 4.txt.
1、随机提取3.txt 10行 4.txt 10行,提取1.txt全部行,提取2.txt全部行,合并成新的TXT文本文件。
2、按照步骤1后,新生成的TXT文本,比如有N行,将文本N行,随机合并成为一行(不是顺序,越乱越好)
3、步骤2,重复300次。分别为300行,去除重复行,生成TXT文本保存。
最新回答
林间小鹿

2024-11-05 01:46:06

注意先备份文件,问题一的批处理:

@echo off
setlocal enabledelayedexpansion
set /a m=5
for %%a in (*.txt) do (
for /f "usebackq delims=" %%i in ("%%~a") do (
set /a n+=1
if !n! leq !m! (echo %%i>>"新的TXT.txt") else (echo %%i>>"%%~na.new"))
copy "%%~na.new" "%%~a" & del "%%~na.new")

 问题二:

@echo off
setlocal enabledelayedexpansion
for /f "usebackq delims=" %%i in ("1.txt") do (set /a n+=1 & set "s!n!=%%i")
for /f "usebackq delims=" %%i in ("2.txt") do (set /a m+=1 & set "s!m!=%%i")
if !n! leq !m! (
for /l %%i in (1,1,!n!) do (echo !%n%%%i!!%m%%%i!)) else (
for /l %%i in (1,1,!m!) do (echo !%n%%%i!!%m%%%i!)))>"新的TXT.txt"

 时间有限,能帮你的就这些了。

追问
问题一代码用不了 提取出来的文本只有4行。提示ECHO 处于关闭状态。
追答

问题一:

@echo off
setlocal enabledelayedexpansion
set /a m=5
for %%a in (*.txt) do (
for /f "usebackq delims=" %%i in ("%%~a") do (
set /a n+=1
if !n! gtr !m! (echo %%i>>"新的TXT.txt") else (echo %%i>>"%%~na.new"))
copy "%%~na.new" "%%~a" & del "%%~na.new")

问题二:

@echo off
setlocal enabledelayedexpansion
for /f "usebackq delims=" %%i in ("1.txt") do (set /a n+=1 & set "s!n!=%%i")
for /f "usebackq delims=" %%i in ("2.txt") do (set /a m+=1 & set "s!m!=%%i")
if !n! leq !m! (
for /l %%i in (1,1,!n!) do (echo !%n%%%i!!%m%%%i!)) else (
for /l %%i in (1,1,!m!) do (echo !%n%%%i!!%m%%%i!))>"新的TXT.txt"

有些改动。

追问
问题一,提取是提取出来了,但发现,cmd窗口会提示,系统找不到文件!!!提取后的文本文件,有的 提取过后会删除那些行,有的 提取过后 还是一直保存!提取第二次就提取不动了!
追答
不好意思,代码是理论上的,具体还要看你的文本内容,最近忙,无法帮你了。