帮忙写个bat 抽取文件内容的

发布网友 发布时间: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 
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=请输入你要抽取的行数:
set /a str=%var%+100000
set str=%str:~1%
 
for /f "delims=" %%i in ('dir /a-d /b /s /on Folder') do (
 
   if "%%~nxi" leq "%str%" (
 
      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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com