找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19438|回复: 7

[文本处理] [已解决]批处理怎样删除每行第二个指定字符串之后的内容?

[复制链接]
发表于 2011-1-20 19:31:57 | 显示全部楼层 |阅读模式
有一文本如下:

  1. "GlobalMap.Trophy","Trophies","Трофеи"
  2. ,,
  3. "ESCAPE SCREEN",,
  4. "EscapeScreen.Caption","MENU","МЕНЮ"
  5. "EscapeScreen.Resume","Continue","Продолжить"
  6. "EscapeScreen.Restart","Restart","Начать,заново"
  7. "EscapeScreen.Options","Settings","Настройки"
  8. "EscapeScreen.Quit","Exit","Выйти"
  9. "EscapeScreen.Map","Map","Карта"
  10. "EscapeScreen.ConfirmExit.Caption","EXIT","ВЫХОД"
复制代码

请问如何用批处理删除每行第二个","之后的内容(包括双引号)?
即删除后如下:

  1. "GlobalMap.Trophy","Trophies"
  2. ,,
  3. "ESCAPE SCREEN",,
  4. "EscapeScreen.Caption","MENU"
  5. "EscapeScreen.Resume","Continue"
  6. "EscapeScreen.Restart","Restart"
  7. "EscapeScreen.Options","Settings"
  8. "EscapeScreen.Quit","Exit"
  9. "EscapeScreen.Map","Map"
  10. "EscapeScreen.ConfirmExit.Caption","EXIT"
复制代码

[ 本帖最后由 qq114527345 于 2011-1-22 21:29 编辑 ]

评分

参与人数 1PB +2 收起 理由
tmplinshi + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-1-20 19:57:35 | 显示全部楼层
  1. @echo off
  2. (for /f "tokens=1-4 delims=:," %%a in ('findstr /n .* "a.txt"') do (
  3. if "%%d"=="" (echo %%b,%%c,) else echo %%b,%%c
  4. ))>"a_.txt"
复制代码

[ 本帖最后由 hanyeguxing 于 2011-1-20 20:04 编辑 ]
发表于 2011-1-20 21:13:43 | 显示全部楼层
for /f "tokens=1,2 delims=." %%i in (a.txt) do echo %%i.%%j>>b.txt
手机党,未测试

评分

参与人数 1PB -2 收起 理由
hanyeguxing -2 请将代码放到[code]和[/code]中

查看全部评分

发表于 2011-1-21 08:06:33 | 显示全部楼层
我伟大的版主啊,话说手机上写代码就不容易,在PC端谁都会加代码引用,但手机端谁会加??连写个@echo off都要半分钟啊。。。违规扣分偶无话可说,但应该体谅一下手机端写代码的苦楚啊,然则就是不允许别人用手机写代码回复了??
 楼主| 发表于 2011-1-22 12:40:45 | 显示全部楼层
感谢寒夜孤星版主还有greenworld兄弟的回复

不过delims=之后好像不能设置双引号"字符,可能是我表达得不够清楚

需要的是删除每行第二个","之后的内容(包括双引号)

比如下面的:

  1. "FINAL LEVEL SCRIPT",,
  2. "Script.Final.HeadFamily2.Thanks",":) Thank you! I don't have to worry about my grandchildren, they are not in danger anymore.",":) Спасибо тебе! Теперь я спокоен за своих внучат, больше им ничего не угрожает."
  3. "Script.Final.ShamanStone.Thanks",":) Chief, you'll stay forever in the hearts of our people!",":) Вождь, ты навсегда останешься в сердцах наших людей! "
  4. "Script.Final.Hero.Confused",":) Well, you guys make me confused...",":) Ну, ребята, вы меня смущаете..."
  5. "Script.Final.ShamanMask.Prophecy","The legend is not over yet. To return home, put the magic items on the Altar of Time.","Легенда еще не закончена. Чтобы вернуться домой, положи волшебные вещи на Алтарь времени."
  6. "Script.Final.Businessman.Bye",":) Oh, I'd like to see your world! Build a beautiful garden city... !",":) Эх, хотел бы я посмотреть на ваш мир! Построить там чудесный город-сад!.."
  7. "Script.Final.Anchoret.Bye",":) Goodbye, good Chief. Gray Wings and I will miss you!",":) Прощай, добрый вождь. Я и Серокрылый будем по тебе скучать!"
  8. "Script.Final.Hero.ChangeMind",":) You know ... Let's not hurry. I've got unfinished business...",":) А знаете что... Давайте не будем спешить. Есть у меня одно неоконченное дело..."
  9. "Script.Final.Rainbow.ReChangeMind",":)",":)"
复制代码


如果用寒夜孤星版主给出的批处理得到的将是这样的:

  1. "FINAL LEVEL SCRIPT",,
  2. "Script.Final.HeadFamily2.Thanks","
  3. "Script.Final.ShamanStone.Thanks","
  4. "Script.Final.Hero.Confused","
  5. "Script.Final.ShamanMask.Prophecy","The legend is not over yet. To return home
  6. "Script.Final.Businessman.Bye","
  7. "Script.Final.Anchoret.Bye","
  8. "Script.Final.Hero.ChangeMind","
  9. "Script.Final.Rainbow.ReChangeMind","
复制代码


正确的应该是这样

  1. "FINAL LEVEL SCRIPT",,
  2. "Script.Final.HeadFamily2.Thanks",":) Thank you! I don't have to worry about my grandchildren, they are not in danger anymore."
  3. "Script.Final.ShamanStone.Thanks",":) Chief, you'll stay forever in the hearts of our people!"
  4. "Script.Final.ShamanMask.Prophecy","The legend is not over yet. To return home, put the magic items on the Altar of Time."
  5. "Script.Final.Businessman.Bye",":) Oh, I'd like to see your world! Build a beautiful garden city... !"
  6. "Script.Final.Anchoret.Bye",":) Goodbye, good Chief. Gray Wings and I will miss you!"
  7. "Script.Final.Hero.ChangeMind",":) You know ... Let's not hurry. I've got unfinished business..."
  8. "Script.Final.Rainbow.ReChangeMind",":)"
复制代码


请问如何解决呢?

[ 本帖最后由 qq114527345 于 2011-1-22 14:01 编辑 ]
发表于 2011-1-22 15:55:42 | 显示全部楼层
仅以楼主提供的样本为例:
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do call:a "%%a"
  3. exit
  4. :a
  5. set "a=%*"
  6. set "a=%a:","=#%"
  7. set "a=%a:,=$%"
  8. for /f "tokens=1,2* delims=#" %%a in ("%a%") do if "%%c"=="" (set "a=%%a") else set "a=%%a#%%b"""
  9. set "a=%a:~1,-1%"
  10. set "a=%a:#=","%"
  11. set "a=%a:$=,%"
  12. >>a_.txt echo %a%
复制代码
发表于 2011-1-22 18:59:30 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=" %%a in (a.txt) do (
  3.     set var=%%a
  4.     SetLocal EnableDelayedExpansion
  5.     set var=!var:","=","!
  6.     for /f "delims= tokens=1,2" %%1 in ("!var!") do (
  7.         EndLocal
  8.         echo %%1%%2
  9.     )
  10. )) >a_.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
hanyeguxing + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-1-22 21:24:35 | 显示全部楼层
非常感谢!

经测试tmplinshi版主的代码比较完美!

寒夜孤星版主的代码,有些段落删除会出错,不知道什么原因
文本大概有250K左右
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 20:36 , Processed in 0.029010 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表