标题: [文件操作] 批处理如何修改文本文件某一行内容? [打印本页]
作者: regabc 时间: 2011-5-28 16:59 标题: 批处理如何修改文本文件某一行内容?
如何修改文本文件某一行内容?
遍历所有文件夹,修改某一行的内容。
文件名称,有中文、英文和数字等等。
比如:文本文件里的某一行内容为
<xml:内容>你好</xml:内容>,这句话就占有一行,想修改为:<xml:内容>朋友最近好不?</xml:内容>
作者: CrLf 时间: 2011-5-28 17:08
具体情况具体分析,批处理的编写是不能脱离实际背景的,请楼主在顶楼更新一下,标明具体要求、前后样本
作者: regabc 时间: 2011-5-28 17:36
2# zm900612
修改了下贴子,请查看下。
作者: CrLf 时间: 2011-5-28 17:54
楼主的说明不太给力啊,我只好按照我的理解来回复了...- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1* delims=:" %%a in ('findstr /l /n "<xml:内容>你好</xml:内容>" 1.txt') do (
- set /a n+=1
- if %%a neq !n! (
- set n=%%a
- echo ^<xml:内容^>朋友最近好不?^</xml:内容^>
- ) else echo %%b
- )
- pause
复制代码
作者: batman 时间: 2011-5-28 17:54
头痛的特殊字符>,还是用vbs来处理吧。。。
作者: regabc 时间: 2011-5-28 18:35
4# zm900612
别忘了,是遍历文件夹,遍历所有TXT文件。不是一个文件。
作者: CrLf 时间: 2011-5-28 18:49
本帖最后由 zm900612 于 2011-5-28 18:51 编辑
- @echo off&setlocal enabledelayedexpansion
- for /r %%a in (*.htm) do (
- (for /f "delims=" %%b in (%%~sa) do (
- set tmp=%%b
- set "tmp=!tmp:>你好</xml:=>朋友最近好不?</xml:!"
- echo !tmp!
- ))>tmp
- move tmp %%~sa
- )
- pause
复制代码
作者: batman 时间: 2011-5-28 21:01
本帖最后由 batman 于 2011-5-29 11:42 编辑
vbs正则:- Dim path, fso
- path = "这里改为你的总目录绝对路径"
- Set fso = CreateObject("scripting.filesystemobject")
- search path
- Set fso = Nothing
- MsgBox "ok"
-
- Function search(path)
- For Each file In fso.GetFolder(path).Files
- If fso.GetExtensionName(file) = "txt" Then RegExptest fso.OpenTextFile(file, 1).ReadAll(), file
- Next
- For Each folder In fso.GetFolder(path).SubFolders
- search folder
- Next
- End Function
-
- Function RegExptest(rgstr, file)
- Dim regex
- Set RegEx = New RegExp
- regex.Global = True
- regex.Pattern = "(<[^<>]+>)[^<>]+(<[^<>]+>)"
- vbstr = regex.Replace(vbstr, "$1要替换成的字符$2")
- fso.OpenTextFile(file, 2, 1).Write rgstr
- Set regex = Nothing
- End Function
复制代码
作者: 随风 时间: 2011-5-28 21:03
未测试,运行前先备份源文件。。。。。切记!!!
:- @echo off
- for /f "delims=" %%i in ('dir/b/a-d/s *.txt') do (
- cd.>temp
- for /f "usebackq delims=" %%a in ("%%i") do (
- set "str=%%a"
- setlocal enabledelayedexpansion
- if "!str!"=="<xml:内容>你好</xml:内容>" (
- >>temp echo ^<xml:内容^>朋友最近好不?^</xml:内容^>
- ) else (>>temp echo !str!)
- endlocal
- )
- move temp "%%i"
- )
- pause
复制代码
作者: batman 时间: 2011-5-29 11:43
8楼已修改为通用正则。。。
作者: common 时间: 2011-5-29 12:11
<xml:内容>你好</xml:内容>,这句话就占有一行,想修改为:<xml:内容>朋友最近好不?</xml:内容>
REecho off
set var= <xml:内容>你好</xml:内容>,这句话就占有一行,想修改为:<xml:内容>朋友最近好不?</xml:内容>
set var=%var:你好 =朋友最近好%
echo 替换后的值: "%var%"
pause
不知道这样对不对
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |