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

[文件操作] 批处理如何修改文本文件某一行内容?

[复制链接]
发表于 2011-5-28 16:59:24 | 显示全部楼层 |阅读模式
如何修改文本文件某一行内容?
遍历所有文件夹,修改某一行的内容。
文件名称,有中文、英文和数字等等。

比如:文本文件里的某一行内容为
<xml:内容>你好</xml:内容>,这句话就占有一行,想修改为:<xml:内容>朋友最近好不?</xml:内容>
发表于 2011-5-28 17:08:06 | 显示全部楼层
具体情况具体分析,批处理的编写是不能脱离实际背景的,请楼主在顶楼更新一下,标明具体要求、前后样本
 楼主| 发表于 2011-5-28 17:36:19 | 显示全部楼层
2# zm900612


修改了下贴子,请查看下。
发表于 2011-5-28 17:54:09 | 显示全部楼层
楼主的说明不太给力啊,我只好按照我的理解来回复了...
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%a in ('findstr /l /n "<xml:内容>你好</xml:内容>" 1.txt') do (
  3.    set /a n+=1
  4.    if %%a neq !n! (
  5.       set n=%%a
  6.       echo ^<xml:内容^>朋友最近好不?^</xml:内容^>
  7.    ) else echo %%b
  8. )
  9. pause
复制代码
发表于 2011-5-28 17:54:48 | 显示全部楼层
头痛的特殊字符>,还是用vbs来处理吧。。。
 楼主| 发表于 2011-5-28 18:35:14 | 显示全部楼层
4# zm900612


别忘了,是遍历文件夹,遍历所有TXT文件。不是一个文件。
发表于 2011-5-28 18:49:05 | 显示全部楼层
本帖最后由 zm900612 于 2011-5-28 18:51 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in (*.htm) do (
  3.         (for /f "delims=" %%b in (%%~sa) do (
  4.                 set tmp=%%b
  5.                 set "tmp=!tmp:>你好</xml:=>朋友最近好不?</xml:!"
  6.                 echo !tmp!
  7.         ))>tmp
  8.         move tmp %%~sa
  9. )
  10. pause
复制代码
发表于 2011-5-28 21:01:37 | 显示全部楼层
本帖最后由 batman 于 2011-5-29 11:42 编辑

vbs正则:

  1. Dim path, fso
  2. path = "这里改为你的总目录绝对路径"
  3. Set fso = CreateObject("scripting.filesystemobject")
  4. search path
  5. Set fso = Nothing
  6. MsgBox "ok"

  7. Function search(path)
  8. For Each file In fso.GetFolder(path).Files
  9.    If fso.GetExtensionName(file) = "txt" Then RegExptest fso.OpenTextFile(file, 1).ReadAll(), file
  10. Next
  11. For Each folder In fso.GetFolder(path).SubFolders
  12.    search folder
  13. Next
  14. End Function

  15. Function RegExptest(rgstr, file)
  16.   Dim regex
  17.   Set RegEx = New RegExp
  18.   regex.Global = True
  19.   regex.Pattern = "(<[^<>]+>)[^<>]+(<[^<>]+>)"
  20.   vbstr = regex.Replace(vbstr, "$1要替换成的字符$2")
  21.   fso.OpenTextFile(file, 2, 1).Write rgstr
  22.   Set regex = Nothing
  23. End Function
复制代码
发表于 2011-5-28 21:03:33 | 显示全部楼层
未测试,运行前先备份源文件。。。。。切记!!!
:

  1. @echo off
  2. for /f "delims=" %%i in ('dir/b/a-d/s *.txt') do (
  3.    cd.>temp
  4.    for /f "usebackq delims=" %%a in ("%%i") do (
  5.       set "str=%%a"
  6.       setlocal enabledelayedexpansion
  7.       if "!str!"=="<xml:内容>你好</xml:内容>" (
  8.            >>temp echo ^<xml:内容^>朋友最近好不?^</xml:内容^>
  9.        ) else (>>temp echo !str!)
  10.        endlocal
  11.     )
  12.     move temp "%%i"
  13. )
  14. pause
复制代码
发表于 2011-5-29 11:43:45 | 显示全部楼层
8楼已修改为通用正则。。。
发表于 2011-5-29 12:11:27 | 显示全部楼层
<xml:内容>你好</xml:内容>,这句话就占有一行,想修改为:<xml:内容>朋友最近好不?</xml:内容>
REecho off
set var= <xml:内容>你好</xml:内容>,这句话就占有一行,想修改为:<xml:内容>朋友最近好不?</xml:内容>
set var=%var:你好 =朋友最近好%
echo 替换后的值: "%var%"
pause
不知道这样对不对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 13:11 , Processed in 0.018285 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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