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

[文本处理] 【求助】我想删除文件里面每行中指定字符前面的内容

各们大哥大姐帮忙看一下!例如有下面一个这样的脚本,
[1]中国你好!
[2]中国你好!
[3]中国你好!
[4]中国你好!
我想把每行里面“中国”前面的字符全部删掉!就是说在这个文件中,把每一行“中”字前面的内容全部删除,
让文本里面的内容最后变成下面这样
中国你好!
中国你好!
中国你好!
中国你好!
请问一下,可以实现这样可能吗,谢谢!

各位帮主,请帮忙看一下,谢谢了

TOP

  演示代码如下(没有考虑特殊情况):
  1. @echo off
  2. cd.>result.txt
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in (test.txt) do (
  5.     set "str=%%i"
  6.     set "str=!str:*中=中!"
  7.     echo !str!>>reslut.txt
  8. )
  9. start result.txt
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

请问一下这位大哥,这句话是什么意思
set "str=!str:*中=中!"

TOP

  把第一个中字及其之前的字符串替换为中字。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

真的可以啊,谢谢这位大哥了,非常感谢

TOP

回复 4楼 的帖子

尽快学会自己看帮助
set /?
环境变量替换已如下增强:

   %PATH:str1=str2%

会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

如果这个字符前有一个固定字符(用a代替),可以不用这么麻烦:
  1. @echo off
  2. for /f "tokens=1*,delims=a" %%i in (a.txt) do echo %%j
  3. pause>nul
复制代码
***共同提高***

TOP

如果楼主的系统中有sed:
  1. sed "s/.*中/中/" a.txt
复制代码
***共同提高***

TOP

完善一下8楼的代码,考虑到某行不含“中”字时,不至于丢失行。
  1. @echo off
  2. for /f "tokens=1*,delims=中" %%i in (a.txt) do (
  3.    if "%%j"=="" (echo %%i) else echo %%j
  4. )
  5. pause>nul
复制代码

batman 开始研究 sed 了。。。? 好事。。
这该死的正则,我一直无法静心研究。。
以后我又多一个人请教问题了,呵呵。。。。好。
技术问题请到论坛发帖求助!

TOP

返回列表