[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
大哥 md创建 很快的瞬间就好了的 不试试看怎么知道了
你给的那个100w行的代码有问题啊 就几个重复的
N多不重复的
至于那个非法字符用word搞下就可以了
好像里面没非法字符啊

[ 本帖最后由 Kiming 于 2009-5-29 19:54 编辑 ]

TOP

好恐怖的方法^_^
上百万行,你要创建多少个目录?况且如果文本内容含文件名不允许的字符怎办?
技术问题请到论坛发帖求助!

TOP

此方法应该可以的

@echo off
for /f %%i in (test.txt) do md %%i
dir/ad/b/o:n>Kiming.txt
for /f %%i in ('dir /b /ad') do rd %%i
是将里面的内容建立成目录 然后提取目录名 在写入新的txt
这个方法速度很快的哦
此方法思路源于 http://www.heycoffee.com/article/SoftwareWorks/320.htm

TOP

C:\Test>test.bat
0 小时 0 分钟 1 秒 51 毫秒

C:\Test>type test.bat
@echo off
set begin=%time%
gawk "!a[$0]++" y3.txt>>a.txt
call :time0 %begin% %time% duration
echo %duration%
goto :eof

:time0
::计算时间差(封装)
@echo off&setlocal&set /a n=0&rem code 随风 @bbs.bathome.net
for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
set /a n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
set /a n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100)
set /a s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
set "ok=%s% 小时 %f% 分钟 %m% 秒 %n% 毫秒"
endlocal&set %~3=%ok:-=%&goto :EOF
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

问题二描述有问题,现更新
技术问题请到论坛发帖求助!

TOP

处理6W行记录花了2分多钟,100W就不敢试了!大概要一个多小时吧!
源文件为:sour2.txt
处理结果为:temp3.txt
可完成两个要求。
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (sour2.txt) do (
  3.         set/a n+=1
  4.         set num=000000!n!
  5.         echo !num:~-7!-%%a
  6. ))>temp.txt
  7. ::加入序号保持原来的顺序
  8. (for /f "tokens=1,2,3* delims=-" %%a in ('sort temp.txt /+8') do (
  9.         if "%%b-%%c" neq "!var!" (echo %%a-%%b-%%c-%%d)
  10.         set var=%%b-%%c
  11. ))>temp2.txt
  12. ::从第8位开始排序,即只按原来的数据排序,重复的丢弃
  13. (for /f "tokens=1,2,3* delims=-" %%a in ('sort temp2.txt') do (
  14. echo %%b----%%c----%%d
  15. ))>temp3.txt
  16. ::恢复原来的顺序,并丢弃加入的临时序号
复制代码
把楼主的数据存为sour.txt, 通过下面代码生成的sour2.txt具有6W行记录。
  1. @echo off
  2. (for /f "delims=" %%a in (sour.txt) do (
  3. for /l %%b in (1,1,10000) do (echo %%a)
  4. ))>sour2.txt
复制代码

[ 本帖最后由 netbenton 于 2009-5-29 17:51 编辑 ]

TOP

已在顶楼给出创建测试文件代码
技术问题请到论坛发帖求助!

TOP

可能不是每个人都知道如何快速生成100W行测试文本,楼主在顶楼给个例子吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2楼 的帖子

就是要看能否突破这个效率问题啊^_^
技术问题请到论坛发帖求助!

TOP

就算写出来了 执行 也要卡死
可以用linux命令

TOP

返回列表