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

[代码合集] 批处理将桌面所有TXT内指定位置替换为指定数值?

如桌面有3个这样的文本,需要同时将3个文本内第三行等号后
的69CV350替换为69CV380,请指教,谢谢。

  1. sed -i "3s/=69CV350/=69CV380/" "%userprofile%\桌面\*.txt"
复制代码

TOP

回复 3# 方恨少


先去下载一个sed.exe

TOP

TOP

不知道为什么不用set写非要用sed呢,明天我补一个。

TOP

回复 6# 冷玉公子


    坐等。

TOP

回复 4# awk


    下载了,但是运行后还是没有被替换?

TOP

回复 8# 方恨少


下载的哪个版本?
注:下载之后把sed.exe放到C:\Windows\System32\下面

TOP

回复 9# awk

sed.exe 4.1.4
请指教,谢谢啊

TOP

回复 10# 方恨少


你的文件路径写错了,看看2楼怎么写的吧。

TOP

回复 11# awk


    我又直接复制了一遍,我好笨啊,困惑,是不是路径不可以有中文

TOP

回复 12# 方恨少


版本问题,你下载一个4.2.1试试吧。

TOP

本帖最后由 冷玉公子 于 2011-9-26 22:38 编辑

来答题的:
首先要说一下 AWK 所使用的
  1. sed -i "3s/=69CV350/=69CV380/" "%userprofile%\桌面\*.txt"
复制代码

也是可行的但是需要第三方软件sed,第三方软件在特殊情况下使用确实有奇效,但是一般还是不建议用的。
具观察AWK同志中意的第三方命令程序基本上都是Linux的,所以看来是Linux的Shell高手啊

像楼主的这个题,如果是这么简单的话。用Set命令的方法是:
  1. 将要替换的值赋值于一个变量例如是变量是:Str
  2. Set Str=%Str:69CV350=69CV380%
  3. 意思就是将变量Str中的69CV350替换为69CV380
复制代码

具体按照楼主要求用的批处理整体就是这样的
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. For /R F:\Temp\P %%A In (*.txt) Do (
  3. @Rem 搜索指定目录下的指定所有txt文件
  4. For /F %%B In (%%A) Do (
  5.   Set "Str=%%B"
  6.   Set "Str=!Str:69CV350=69CV380!"
  7.   Echo !Str!
  8. @Rem 第二个For循环的意思是读取文本中的内容如果碰到69CV350就替换为69CV380
  9. )
  10. )
  11. Pause
复制代码

这里我用的测试文本为:100.txt 路径为:F:\Temp
只是测试并没有输出到文件,如果是学习这样就够了。
但是如果是求具体应用批处理的话,就要把详细的信息和想实现的东西说出来了。
上面的只是方法,供学习用。

TOP

回复 14# 冷玉公子


    多谢老师。
  我是想把所有文本内都替换掉并保存。我需要用很多个和一楼所示一样的文本,每次需要更改时都要一个一个打开修改保存,很浪费时间。
  还望不吝赐教,万分感谢。

TOP

本帖最后由 ArdentMan 于 2011-9-27 10:54 编辑
  1. @Echo Off&SetLocalEnableDelayedExpansion
  2. Set "MyPath=请填写为自己桌面的绝对路径"
  3. Cd /d "%MyPath%"
  4. For /F "delims=" %%a In ('Dir /b *.txt') Do (
  5.   (For /F "tokens=1* delims=:" %%b In ('Findstr /n .* %%a') Do (
  6.     Set "Str=%%b"
  7.     If %%b equ 3 Set "Str=!Str:69CV350=69CV380!"
  8.     Echo,!Str!
  9.   ))>$
  10.   Move $ "%%a"
  11. )
复制代码
一路飘过的鸟~~~

TOP

返回列表