标题: [文件操作] 批处理如何读取文本的一个字符串,写到另外一个文本中? [打印本页]
作者: weww000 时间: 2012-11-21 00:57 标题: 批处理如何读取文本的一个字符串,写到另外一个文本中?
你好。大大,请教个批处理问题。用CMD命令怎么实现?
1.txt 内容为
<Target>443A5C73797374656D736574CEC4BCFEB4E6B7C55C;1</Target>
2.TXT
<Target>AAAAAAAAAAAAAAAAAAAAAAAAA</Target>
1.TXT 中 <Target> </Target> 中间的字母是会变得,我想获取出这个字符串写到 2.txt 的<Target> </Target> 中间。。
求解。。。
作者: andyrave 时间: 2012-11-21 01:36
两个文本 <Target> </Target> 都只有一行的话 比较好写 最好把1和2的范本发上来看看
作者: weww000 时间: 2012-11-21 02:16
1.
<History>
<Target>443A5C73797374656D736574CEC4BCFEB4E6B7C55C;1</Target>
<NormalReplaceMemo1>31302E312E3235342E32</NormalReplaceMemo1>
<NormalReplaceMemo2>A3A8C9BEB3FDB4CBB4A6A3A9C8BBBAF3CAE4C8EBC4E3B5C4B7FECEF1C6F7B5D8D6B7A3ACB5E3BBF7D3D2CFC2BDC7B5C4BFAACABC</NormalReplaceMemo2>
<CharacterReplaceMemo1></CharacterReplaceMemo1>
2.
<History>
<Target>443A5C73797374656D736574CEC4BCFEB4E6B7C55C;1</Target>
<NormalReplaceMemo1>31302E31A3A8C9BEB3FD2E32</NormalReplaceMemo1>
<NormalReplaceMemo2>A3A8C9BEB3FDB4CBB4A6A3A9C8BBBAF3CAE4C8EBC4E3B5C4B7FECEF1C6F7B5D8D6B7A3ACB5E3BBF7D3D2CFC2BDC7B5C4BFAACABC</NormalReplaceMemo2>
<CharacterReplaceMemo1></CharacterReplaceMemo1>
问题不在这里 在于 1.txt里的东西会变
作者: weww000 时间: 2012-11-21 02:19
1.txt里面是个加密过的东西。不知道什么加密、!!!她会变得,我想运行把调出来,写到2.txt里面。
就是
1。里面 <Target>1111</Target>
写到
2.<NormalReplaceMemo2>1111</NormalReplaceMemo2>
1111 只是示意。。。是会变得需要读出来。
作者: tmplinshi 时间: 2012-11-21 02:28
- @echo off
- setlocal enabledelayedexpansion
-
- for /f "delims=" %%a in ('findstr "<Target>.*</Target>" 1.txt') do (
- set Target=%%a
- )
-
- for /f %%n in (' find /c /v "" ^< 2.txt ') do (
- for /l %%a in (1 1 %%n) do (
- set str=
- set /p str=
- if not defined str (
- echo,
- ) else if "!str:</Target>=!" neq "!str!" (
- echo !Target!
- ) else (
- echo,!str!
- )
- )
- ) <2.txt >2.new
-
- move 2.new 2.txt
-
- pause
复制代码
作者: tmplinshi 时间: 2012-11-21 02:34
本帖最后由 tmplinshi 于 2012-11-21 02:38 编辑
sed 下载地址: http://bathome.net/thread-15605-1-4.html- @echo off
- set sed=sed -n "s|^.*\(<Target>.*</Target>\).*$|\1|ip" 1.txt
- for /f "delims=" %%a in ('%sed%') do set t1=%%a
- sed -i "s|<Target>.*</Target>|%t1%|i" 2.txt
- pause
复制代码
作者: weww000 时间: 2012-11-21 18:39
本帖最后由 tmplinshi 于 2012-11-21 18:46 编辑
多谢老大。。。都试过了,可以。
如果只替换2.txt中 <Target>adsdasdsadsadsa</Target> 的前两位,后面的保留呢?
作者: tmplinshi 时间: 2012-11-21 18:46
本帖最后由 tmplinshi 于 2012-11-21 18:57 编辑
多谢老大。。。都试过了,可以。
如果只替换2.txt中 adsdasdsadsadsa 的前两位,后面的保留呢?
weww000 发表于 2012-11-21 18:39
是否是这个意思?
1.txt
2.txt
结果为:
2.txt
<Target>123456cdefg</Target>
如果是这个意思的话,代码如下:- @echo off
- set sed=sed -n "s|^.*<Target>\(.*\)</Target>.*$|\1|ip" 1.txt
- for /f "delims=" %%a in ('%sed%') do set t1=%%a
- sed -i -r "s|(<Target>)..(.*</Target>)|\1%t1%\2|i" 2.txt
复制代码
作者: weww000 时间: 2012-11-21 19:18
控制字符截取2的是哪一个?2个字符?4个字符?
作者: weww000 时间: 2012-11-21 19:19
看明白了。。。是.. ....
作者: weww000 时间: 2012-11-21 19:51
创建多个快捷方式为什么只有第一个有效?其他的无效
作者: tmplinshi 时间: 2012-11-21 23:30
本帖最后由 tmplinshi 于 2012-11-21 23:31 编辑
创建多个快捷方式为什么只有第一个有效?其他的无效
weww000 发表于 2012-11-21 19:51
请另外发一个帖子,因为这个问题与这个帖子没有关联。
另外,你需要把代码贴出来,别人才能分析是什么原因。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |