[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理为何只能生成31个文件?

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=0
  4. :loop
  5. set /a n+=1
  6. FOR /F "tokens=%n% delims=/" %%i in (gj.txt,58.txt) do @echo %%i >> cp%n%.txt
  7. goto :loop
复制代码
以上代码从gj.txt,58.txt 二个文本中各抽取一行内容组成新的文本,gj.txt,58.txt中的内容用“/”分隔

目前生成的cp**文件只能从cp1.txt到cp31.txt,只能生成31个文档,

gj.txt内容为
  1. qq情侣网名_/qq个性网名_/qq网名大全_/qq伤感网名_/qq网名繁体字_/2011qq网名_/腾讯qq网名_/腾讯网名_/qq非主流网名_/qq英文网名_/qq个性情侣网名_/qq非主流情侣网名_/qq情侣网名大全_/2011qq情侣网名_/qq英文情侣网名_/qq飞车情侣网名_/腾讯qq情侣网名_/qq空间情侣网名_/qq炫舞情侣网名_/qq伤感情侣网名_/2011qq个性网名_/qq非主流个性网名_/qq个性伤感网名_/qq女生个性网名_/qq个性英文网名_/腾讯qq个性网名_/qq性格网名_/qq男生个性网名_/qq个性网名繁体字_/2011qq网名大全_/qq网名繁体字大全_/qq网名大全男_/qq长网名大全_/qq英文网名大全_/腾讯qq网名大全_/qq男生网名大全_/qq女生网名大全_/2011qq情侣网名大全_/qq男生伤感网名_/qq非主流伤感网名_/2011qq伤感网名_/qq女生伤感网名_/伤感的qq网名_/qq伤感网名男_/qq网名伤感繁体字_/qq伤感长网名_/qq情侣网名繁体字_/qq网名繁体字转换器_/2011qq网名繁体字_/qq网名繁体字女生_/qq非主流网名繁体字_/qq男生网名繁体字_/qq可爱网名繁体字_/2011qq长网名_/2011腾讯网名_/2011qq女生网名_/2011qq超长网名_/腾讯qq英文网名_/腾讯qq2011网名_/腾讯qq可爱网名_/腾讯qq女网名_/腾讯qq搞笑网名_/qq网名_/qq非主流女生网名_/qq非主流男生网名_/2011qq非主流网名_/qq非主流英文网名_/qq非主流长网名_/非主流qq网名大全_/qq空间网名_/2011qq个性情侣网名_/qq个性情侣网名一对_/qq炫舞个性情侣网名_/qq个性情侣长网名_/qq个性情侣英文网名_/qq飞车个性情侣网名_/qq最新个性情侣网名_/qq个性伤感情侣网名_/qq个性情侣网名大全_/个性的qq情侣网名_/qq非主流情侣长网名_/非主流情侣网名_/非主流个性情侣网名_/2011非主流情侣网名_/非主流伤感情侣网名_/非主流情侣网名大全_/最新非主流情侣网名_/非主流情侣网名长的_/非主流超长情侣网名_/非主流幸福情侣网名_/qq飞车情侣网名大全_/qq情侣长网名大全_/qq英文情侣网名大全_/qq炫舞情侣网名大全_/qq空间情侣网名大全_/qq超长情侣网名大全_/qq12字情侣网名大全_/情侣网名大全_/2011qq超长情侣网名_/2011qq幸福情侣网名_/2011qq最新情侣网名_/2011qq情侣长网名_/
复制代码
58.txt内容为
  1. ︸°莫名的想妳︸°无意的念你|/▃_欲念▃_执念|/毒情畸情|/′为你饮剧毒′为你毁容颜|/情绪信念|/♦彼时彼刻的爱╮♦此时此刻的爱╮|/舍不得把你抓紧舍不得把你放开|/用你的时候ゝ千般温柔弃你的时候ゝ毫不留情|/我不要思念你我要紧挨着你|/一种相思゛两处闲愁゛|/两情若是久长时゛又岂在朝朝暮暮゛|/以身相许易以生相许难|/因为你是你因此我是我|/∞浮华霸黎つ∞尘世棟京つ|/゛成成尛京京的夫゛京京尛成成的妻|/╰硪是你的梁山伯╰硪是你的祝英台|/女人大声点男人快一点|/╰呐个男人的谎言╰呐个女人的谎言|/■硪爱你爱的无可救药□硪爱你爱的死心塌地|/╰最疼爱的人爱硪多少╰疼愛硪的人沒有多少|/失声╰呐喊触动每个音符闭眼╰聆听世界每个角度|/╰狠黄狠暴力╰狠纯狠暧昧|/Sou1相依ゞSou1相偎ゞ|/个性网的签名只是为了纪念你|/妳會莣記莪袔莪莋丕菿|/╭尛帥"╭爱帥帥"|/1加1等于2|/◇安分小男人"◇安分小女人"|/那誰我不在爱你那莪筭イ+厸|/最好的幸福是把一个人记住最累的辛苦是想你想到哭|/#我爱她.不容质疑.#我爱他.无须怀疑.|/何必强颜欢笑っ何必最做多情っ|/╰无可奈何花落去╰似曾相识燕归来m1n3珍惜你#m1n3珍重你#|/向往平淡√不甘平凡√|/谢谢你掌心温暖到我心原谅你看你一脸孩子气|/爱情好像流沙把我掩埋ひ爱情好像流沙把我掩埋ひ|/男人不坏女人不爱女人不爱男人不坏|/心没有安置ㄟ只好在流浪ㄟ|/我留在原点ㄲ始终很留恋ㄲ|/杂/老头杂/老太|/比起脑海离心脏更近的人比起相聚离分别更近的人|/╰﹀小黄牛╰﹀小狗狗|/我爱你.*e你爱我.*e|/永远葽快樂記得葽快樂|/悲痛″starˇ幸福″overˇ|/牽佐手っ吥離牽佑手っ吥棄|/左手边牵你右手边牵你|/溺水三千我只取一瓢饮|/派大星离不开海绵宝宝海綿寶寶離不開派大星|/许你一世柔情给你一生宠溺|/你这个优雅的废物※你这个冷漠的怪兽※|/始终如一相伴于你苦痛悲始终如一相随于你喜乐美|/曲终人散▍谁去谁留-繁华落尽▍谁痛谁伤-|/﹌花花世界-﹌何必当真-|/海绵宝宝为什么哭?因为派大星背叛了他|/一个如此霸道的男人い一个极端高傲的女人い|/青花瓷-兰亭序-|/曾经╮现在╮|/注定陪你到最后注定跟你到最后|/我是小人物你是大人物|/别拿山炮不当人er别拿二逼不吊事er|/涐爱你真真切切涐恋你刻骨铭心|/下雨了╮说抱歉天晴了╮说再见|/开心关心|/宠辱不惊坐看庭前花开花落╰我带你私奔╰带我去私奔|/愛愛愛愛愛╮貓花花花花花╮貓|/〆老男人〆老女人|/你是我内心的一首歌ゞ我是你内心的一首歌ゞ|/你腐蚀了我的全部你瓦解了我的所有|/喂等我嗯等你|/╰心疼你的心疼╰’疼爱你的疼爱|/丧心狂失心疯|/闻得到的气息触不到的温柔|/两情若是久长时#又岂在朝朝暮暮#|/纳爱斯▍清新有他°纳爱斯▍清新有她°|/◆◇:誰都吥媞誰の誰◇◆:呮侑莪媞莪の莪|/那過去の迴憶迴憶の那過去|/我离君天涯#君隔我海角#|/情人总分分和和我们却越爱越深|/
复制代码
谢谢大家

[ 本帖最后由 danny123 于 2011-2-12 21:57 编辑 ]

原帖由 broly 于 2011-2-13 23:49 发表


还是过期。。。
用VBS可以不。。。

  1. '//保存此文件为 untitled.vbs
  2. '//跟那两个文本放在一起,然后运行。。。
  3. Dim fso,f,ary1,ary2,intMax,intMin,i,strText
  4. Set fso=CreateObject("Scripting.FileSystemObject")
  5. Set f=fso.OpenTextFile(fso.GetFolder(".") & "\gj.txt",1)
  6. ary1=Split(f.ReadAll,"/",-1) : f.Close
  7. Set f=fso.OpenTextFile(fso.GetFolder(".") & "\58.txt",1)
  8. ary2=Split(f.ReadAll,"/",-1) : f.Close
  9. If UBound(ary1) > UBound(ary2) Then
  10.   intMax=UBound(ary1)
  11.   intMin=UBound(ary2)
  12. Else
  13.   intMax=UBound(ary2)
  14.   intMin=UBound(ary1)
  15. End If
  16. For i=1 To intMin
  17.   strText=ary1(i) & vbCrLf & ary2(i)
  18.   Set f=fso.CreateTextFile("cp"&i&".txt",True)
  19.   f.Write strText
  20.   f.Close
  21. Next
  22. For i=intMin To intMax
  23.   If UBound(ary1)=intMax Then
  24.     strText=ary1(i)
  25.   Else
  26.     strText=ary2(i)
  27.   End If
  28.   Set f=fso.CreateTextFile("cp"&i&".txt",True)
  29.   f.Write strText
  30.   f.Close
  31. Next
  32. MsgBox "完成!"
  33. Set fso=Nothing:Set f=Nothing
复制代码
---学无止境---

TOP

原帖由 danny123 于 2011-2-13 23:42 发表


谢谢,已经续了


还是过期。。。
用VBS可以不。。。
---学无止境---

TOP

原帖由 cutebe 于 2011-2-13 19:05 发表
是阿,使用用第三方SED 4.14吧(注意备份你的两个TXT文本)
http://bbs.bathome.net/thread-1114-1-1.html@echo off
cd/d %~dp0
(echo sed -i "s/\//\n/g" gj.txt
echo sed -i "s/\//\n/g" 58.txt
echo exit)>N ...


测试了一下,好像不行,谢谢您

TOP

原帖由 Batcher 于 2011-2-13 19:18 发表
过期了,无法从网盘下载。


谢谢,已经续了

TOP

  1. gawk -F/ "NR==FNR{for(i=1;i<=NF;i++)a[i]=$i}NR>FNR{for(i=1;i<=NF;i++)print $i\"\n\"a[i] >\"cp\"i\".txt\"}" 58.txt gj.txt
复制代码

TOP

回复 15楼 的帖子

过期了,无法从网盘下载。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

是阿,使用用第三方SED 4.14吧(注意备份你的两个TXT文本)
http://bbs.bathome.net/thread-1114-1-1.html
  1. @echo off
  2. cd/d %~dp0
  3. (echo sed -i "s/\//\n/g" gj.txt
  4. echo sed -i "s/\//\n/g" 58.txt
  5. echo exit)>N.BAT
  6. start N.BAT
  7. echo 按任意键开始生成文件
  8. pause>nul
  9. setlocal enabledelayedexpansion
  10. for %%a in (gj.txt;58.txt)do (
  11.  set n=
  12.  FOR /F "delims=" %%i in (%%a) do (
  13.   set/a n+=1
  14.   >>cp!n!.txt echo=%%i
  15.  )
  16. )
  17. del N.BAT
  18. pause
复制代码

[ 本帖最后由 cutebe 于 2011-2-13 19:06 编辑 ]

TOP

使用fr或sed替换/为换行
然后用for 处理
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

不知道for /f "tokens=1*"...语句的参数有没有限制极限长度,如果没限制的话估计用临时文件可以做到,不过效率就不用指望了
还有一个思路是fsutil+for切割文件,但是无论效率还是通用性上都差强人意
不用第三方命令的话,别的思路暂时没有了...等待高人出现

[ 本帖最后由 zm900612 于 2011-2-13 17:17 编辑 ]

TOP

有没有方法改成不受限制,批处理一点都不懂,不好意思诸位

TOP

100KB=102400B
如果都在同一行的话,这个是不是太大了...变量的极限容量才8192,所以我弃权...

TOP

请求帮忙修改一下代码,还是tokens显示31条的问题

昨天在论坛求助,大家都踊跃帮忙,十分感谢,具体见

批处理为何只能生成31个文件?

但存在一个问题,因为我的文档内容太多,每个都在100K左右,运行昨天各位提供的代码就无法生成文件了,现在这里有一个代码,每生成完一个文件后需要按任意键才可以继续生成,但仍然有 tokens 31 次的限制,请求大家再帮我参考一下,
  1. @echo off
  2. set /a n=0
  3. :loop
  4. set /a n+=1
  5. FOR /F "tokens=%n% delims=/" %%i in (gj.txt,58.txt) do @echo %%i >> cp%n%.txt
  6. pause
  7. goto :loop
复制代码
因为附件有100多K,所以传在网盘,请大家有空帮忙看看

gj.txt  地址  http://u.115.com/file/f752225630
58.txt  地址  http://u.115.com/file/f7fe67bbf6

谢谢

TOP

10楼代码已修正...

TOP

  1. :不处理一些特殊字符
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. FOR /F "delims=" %%i in (gj.txt,58.txt) do (
  5.  set "L=%%i"
  6.  set NL=!L:/=;!
  7.  set n=
  8.  FOR %%j in (!NL!) do (
  9.   set/a n+=1
  10.   >>cp!n!.txt echo=%%j
  11.  )
  12. )
  13. pause
复制代码

TOP

返回列表