发布网友 发布时间:2022-04-27 02:18
共2个回答
热心网友 时间:2022-06-22 06:04
@Echo Off
SetLocal EnableDelayedExpansion
For /F %%i In ('wc -l a.txt') Do Echo a.txt总共有%%i行
Set /P Lines=您需要提取多少行?
Set /A Line=Lines
For /F "Delims=" %%i In (a.txt) Do (
Set /A Lines-=1
>>%Line%.txt Echo %%i
If !Lines!=0 Call :Next
)
:Next
More +%Line% a.txt>a.txt
Set /P=完成!回车键退出.
以上为代码,需要用到第三方wc.exe,上传不了
请将wc.exe和批处理放在与a.txt同一目录下执行
下载地址 http://batch-cn.qiniudn.com/tool/wc.exe
追问这个文件报毒了 而且带个文件有些不太好。追答为了提高效率......
杀软早已卸
热心网友 时间:2022-06-22 06:05
@echo off
setlocal enabledelayedexpansion
md Folder
set m=100000
attrib +h Folder
for /f "delims=" %%i in (a.txt) do (
set /a n+=1
set /a num=%m%+!n!
set num=!num:~1!
echo %%i>Folder\!num!
)
echo 一共有%n%行
set /p var=请输入你要抽取的行数(输入格式如:00001,01987):
for /f "delims=" %%i in ('dir /a-d /b /s /on Folder') do (
if "%%~nxi" leq "%var%" (
for /f "delims=" %%j in (%%i) do echo %%j>>%var%.txt
) else (
for /f "delims=" %%j in (%%i) do echo %%j>>$
)
)
move $ a.txt
rd /s /q Folder
pause
追问不错了。 就是统计有点慢 三万行要1分钟接近。 还有就是提取的时候 直接输入数字可以吗 不加000的
追答
批处理使用for /f处理比较大txt文件时,效率很低,除非使用第三方工具。
另外除了这个处理慢的问题我*为力外,你要求另外一个帮你解决了:
@echo off