Board logo

标题: [文本处理] 如何用批处理代码实现每二行存一个文件并把第一行存为该文件名? [打印本页]

作者: YYEnigma    时间: 2012-12-6 18:57     标题: 如何用批处理代码实现每二行存一个文件并把第一行存为该文件名?

韩剧_情定大饭店_中字全集.rar
http://www.t00y.com/file/8225530
韩剧_汉城别曲.rar
http://www.t00y.com/file/8225531
韩剧_玻璃鞋.rar
http://www.t00y.com/file/8224973
韩剧_白色巨塔.rar
http://www.t00y.com/file/8225557
韩剧_饼干老师星星糖+OST_中字全集.rar
http://www.t00y.com/file/8224955
韩剧_首尔武林传.rar
http://www.t00y.com/file/8224956
韩剧_香港特急_中字全集.rar
http://www.t00y.com/file/8224957
韩剧_鬣狗.rar
http://www.t00y.com/file/8224958
韩剧_鬼迷_中字全集.rar
http://www.t00y.com/file/8224959
韩剧_魂.rar
http://www.t00y.com/file/8224960
韩剧_魔女幼熙.rar
http://www.t00y.com/file/8224961
韩剧_魔术_中字全集.rar
http://www.t00y.com/file/8224962
韩剧_魔王.rar
http://www.t00y.com/file/8224963
作者: weichenxiehou    时间: 2012-12-6 22:17

  1. @echo off
  2. for /f "delims=" %%a in (test.txt) do (
  3.   set "str=%%a"
  4.   set/a num+=1,row=num%%2
  5.   setlocal enabledelayedexpansion
  6.   if !row! equ 1 set "file=!str!"
  7.   echo !str!>>!file!
  8.   endlocal
  9. )
复制代码

作者: YYEnigma    时间: 2012-12-6 22:36

回复 2# weichenxiehou


    老大感谢您的回复 首先没有存成TXT文件 其次存入的文件中也没有那行地址内容而只有第一行名字 仰望老大再修改一下 谢谢
作者: cxmzlxb    时间: 2012-12-6 22:42

回复 3# YYEnigma


    弄不懂了,你的TXT没生成,那你的资料从哪来?
作者: weichenxiehou    时间: 2012-12-6 22:46

本帖最后由 weichenxiehou 于 2012-12-6 22:50 编辑

回复 3# YYEnigma
之前没说要生成txt啊。。。
  1. 发现问题,占楼编辑
复制代码

作者: YYEnigma    时间: 2012-12-6 22:53

回复 5# weichenxiehou


    老大不好意思 没说清楚 帮忙改一下吧 谢谢
作者: weichenxiehou    时间: 2012-12-6 22:54

回复 6# YYEnigma
如果文件名中有感叹号就会出现问题:
  1. @echo off&setlocal enabledelayedexpansion
  2. set num=
  3. for /f "delims=" %%a in (test.txt) do (
  4.   set "str=%%a"
  5.   set/a num+=1,row=num%%2
  6.   if !row! equ 1 set "file=!str!"
  7.   echo !str!>>"!file:.rar=.txt!"
  8. )
复制代码

作者: YYEnigma    时间: 2012-12-6 22:59

回复 7# weichenxiehou


    非常感谢老大的帮忙 现在可以了 不过您说文件名中有感叹号就有问题 哪不知这个修改会很复杂吗(就是有感叹号也不会有问题)如果复杂就算了 
作者: weichenxiehou    时间: 2012-12-6 23:03

回复 8# YYEnigma
问题是:文件名中有感叹号的话会被去掉,暂时没找到解决办法。不过用三方工具倒是可以。。。
作者: YYEnigma    时间: 2012-12-6 23:09

回复 9# weichenxiehou


    知道了 非常感谢你的帮助 
作者: apang    时间: 2012-12-6 23:14

vbs,试试?
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Set File = FSO.OpenTextFile("test.txt",1)
  3. Do Until File.AtEndOfStream
  4.    Str2 = File.ReadLine
  5.    If Str1 <> "" Then
  6.       Name = Left(Str1,InstrRev(Str1,".")) & "txt"
  7.       Str = Str1 & vbCrLf & Str2
  8.       FSO.CreateTextFile(Name,True).Write Str
  9.       Str1 = "" : Str2 = ""
  10.    End If
  11.    Str1 = Str2
  12. Loop
  13. MsgBox "OK"
复制代码

作者: YYEnigma    时间: 2012-12-6 23:33

回复 11# apang


    也感谢这位老师的回答
作者: BAT-VBS    时间: 2012-12-7 09:53

回复 9# weichenxiehou


我先来个gawk的
  1. gawk "NR%2{f=$0;getline;print f\"\n\"$0 >f\".txt\"}" a.txt
复制代码

作者: 悬崖之树    时间: 2012-12-11 22:24

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f %%i in (1.txt) do (
  3.    set /a n+=1
  4.    set /a m=!n!%%2+1
  5.    if !m! equ 2 (
  6.      echo %%i>%%i.txt
  7.      set str=%%i.txt
  8.    )
  9.    if !m! equ 1 (
  10.      echo %%i>>!str!
  11.    )
  12. )
  13. pause
复制代码

作者: jains521    时间: 2012-12-13 20:33

  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (111.txt) do (
  3. set /a "n+=1, 0/(n%%2)" 2>nul &&set filename=%%i&echo %%i>"!filename!" ||echo %%i>>"!filename!"
  4. )
  5. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2