标题: [文本处理] [已解决]批处理怎样删除每行第二个指定字符串之后的内容? [打印本页]
作者: qq114527345 时间: 2011-1-20 19:31 标题: [已解决]批处理怎样删除每行第二个指定字符串之后的内容?
有一文本如下:-
- "GlobalMap.Trophy","Trophies","Трофеи"
- ,,
- "ESCAPE SCREEN",,
- "EscapeScreen.Caption","MENU","МЕНЮ"
- "EscapeScreen.Resume","Continue","Продолжить"
- "EscapeScreen.Restart","Restart","Начать,заново"
- "EscapeScreen.Options","Settings","Настройки"
- "EscapeScreen.Quit","Exit","Выйти"
- "EscapeScreen.Map","Map","Карта"
- "EscapeScreen.ConfirmExit.Caption","EXIT","ВЫХОД"
复制代码
请问如何用批处理删除每行第二个","之后的内容(包括双引号)?
即删除后如下:
-
- "GlobalMap.Trophy","Trophies"
- ,,
- "ESCAPE SCREEN",,
- "EscapeScreen.Caption","MENU"
- "EscapeScreen.Resume","Continue"
- "EscapeScreen.Restart","Restart"
- "EscapeScreen.Options","Settings"
- "EscapeScreen.Quit","Exit"
- "EscapeScreen.Map","Map"
- "EscapeScreen.ConfirmExit.Caption","EXIT"
复制代码
[ 本帖最后由 qq114527345 于 2011-1-22 21:29 编辑 ]
作者: hanyeguxing 时间: 2011-1-20 19:57
- @echo off
- (for /f "tokens=1-4 delims=:," %%a in ('findstr /n .* "a.txt"') do (
- if "%%d"=="" (echo %%b,%%c,) else echo %%b,%%c
- ))>"a_.txt"
复制代码
[ 本帖最后由 hanyeguxing 于 2011-1-20 20:04 编辑 ]
作者: greenworld 时间: 2011-1-20 21:13
for /f "tokens=1,2 delims=." %%i in (a.txt) do echo %%i.%%j>>b.txt
手机党,未测试
作者: greenworld 时间: 2011-1-21 08:06
我伟大的版主啊,话说手机上写代码就不容易,在PC端谁都会加代码引用,但手机端谁会加??连写个@echo off都要半分钟啊。。。违规扣分偶无话可说,但应该体谅一下手机端写代码的苦楚啊,然则就是不允许别人用手机写代码回复了??
作者: qq114527345 时间: 2011-1-22 12:40
感谢寒夜孤星版主还有greenworld兄弟的回复
不过delims=之后好像不能设置双引号"字符,可能是我表达得不够清楚
需要的是删除每行第二个","之后的内容(包括双引号)
比如下面的:
-
- "FINAL LEVEL SCRIPT",,
- "Script.Final.HeadFamily2.Thanks",":) Thank you! I don't have to worry about my grandchildren, they are not in danger anymore.",":) Спасибо тебе! Теперь я спокоен за своих внучат, больше им ничего не угрожает."
- "Script.Final.ShamanStone.Thanks",":) Chief, you'll stay forever in the hearts of our people!",":) Вождь, ты навсегда останешься в сердцах наших людей! "
- "Script.Final.Hero.Confused",":) Well, you guys make me confused...",":) Ну, ребята, вы меня смущаете..."
- "Script.Final.ShamanMask.Prophecy","The legend is not over yet. To return home, put the magic items on the Altar of Time.","Легенда еще не закончена. Чтобы вернуться домой, положи волшебные вещи на Алтарь времени."
- "Script.Final.Businessman.Bye",":) Oh, I'd like to see your world! Build a beautiful garden city... !",":) Эх, хотел бы я посмотреть на ваш мир! Построить там чудесный город-сад!.."
- "Script.Final.Anchoret.Bye",":) Goodbye, good Chief. Gray Wings and I will miss you!",":) Прощай, добрый вождь. Я и Серокрылый будем по тебе скучать!"
- "Script.Final.Hero.ChangeMind",":) You know ... Let's not hurry. I've got unfinished business...",":) А знаете что... Давайте не будем спешить. Есть у меня одно неоконченное дело..."
- "Script.Final.Rainbow.ReChangeMind",":)",":)"
复制代码
如果用寒夜孤星版主给出的批处理得到的将是这样的:
-
- "FINAL LEVEL SCRIPT",,
- "Script.Final.HeadFamily2.Thanks","
- "Script.Final.ShamanStone.Thanks","
- "Script.Final.Hero.Confused","
- "Script.Final.ShamanMask.Prophecy","The legend is not over yet. To return home
- "Script.Final.Businessman.Bye","
- "Script.Final.Anchoret.Bye","
- "Script.Final.Hero.ChangeMind","
- "Script.Final.Rainbow.ReChangeMind","
复制代码
而正确的应该是这样:
-
- "FINAL LEVEL SCRIPT",,
- "Script.Final.HeadFamily2.Thanks",":) Thank you! I don't have to worry about my grandchildren, they are not in danger anymore."
- "Script.Final.ShamanStone.Thanks",":) Chief, you'll stay forever in the hearts of our people!"
- "Script.Final.ShamanMask.Prophecy","The legend is not over yet. To return home, put the magic items on the Altar of Time."
- "Script.Final.Businessman.Bye",":) Oh, I'd like to see your world! Build a beautiful garden city... !"
- "Script.Final.Anchoret.Bye",":) Goodbye, good Chief. Gray Wings and I will miss you!"
- "Script.Final.Hero.ChangeMind",":) You know ... Let's not hurry. I've got unfinished business..."
- "Script.Final.Rainbow.ReChangeMind",":)"
复制代码
请问如何解决呢?
[ 本帖最后由 qq114527345 于 2011-1-22 14:01 编辑 ]
作者: hanyeguxing 时间: 2011-1-22 15:55
仅以楼主提供的样本为例:- @echo off
- for /f "delims=" %%a in (a.txt) do call:a "%%a"
- exit
- :a
- set "a=%*"
- set "a=%a:","=#%"
- set "a=%a:,=$%"
- for /f "tokens=1,2* delims=#" %%a in ("%a%") do if "%%c"=="" (set "a=%%a") else set "a=%%a#%%b"""
- set "a=%a:~1,-1%"
- set "a=%a:#=","%"
- set "a=%a:$=,%"
- >>a_.txt echo %a%
复制代码
作者: tmplinshi 时间: 2011-1-22 18:59
- @echo off
- (for /f "delims=" %%a in (a.txt) do (
- set var=%%a
- SetLocal EnableDelayedExpansion
- set var=!var:","=","!
- for /f "delims= tokens=1,2" %%1 in ("!var!") do (
- EndLocal
- echo %%1%%2
- )
- )) >a_.txt
复制代码
作者: qq114527345 时间: 2011-1-22 21:24
非常感谢!
经测试tmplinshi版主的代码比较完美!
寒夜孤星版主的代码,有些段落删除会出错,不知道什么原因
文本大概有250K左右
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |