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

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

有一文本如下:
  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 编辑 ]
1

评分人数

    • tmplinshi: 感谢给帖子标题标注[已解决]字样PB + 2

非常感谢!

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

寒夜孤星版主的代码,有些段落删除会出错,不知道什么原因
文本大概有250K左右

TOP

  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

评分人数

TOP

仅以楼主提供的样本为例:
  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%
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

感谢寒夜孤星版主还有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 编辑 ]

TOP

我伟大的版主啊,话说手机上写代码就不容易,在PC端谁都会加代码引用,但手机端谁会加??连写个@echo off都要半分钟啊。。。违规扣分偶无话可说,但应该体谅一下手机端写代码的苦楚啊,然则就是不允许别人用手机写代码回复了??

TOP

for /f "tokens=1,2 delims=." %%i in (a.txt) do echo %%i.%%j>>b.txt
手机党,未测试
1

评分人数

TOP

  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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表