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

[文件操作] 批处理如何读取文本的一个字符串,写到另外一个文本中?

[复制链接]
发表于 2012-11-21 00:57:23 | 显示全部楼层 |阅读模式
你好。大大,请教个批处理问题。用CMD命令怎么实现?

1.txt 内容为

<Target>443A5C73797374656D736574CEC4BCFEB4E6B7C55C;1</Target>
2.TXT

<Target>AAAAAAAAAAAAAAAAAAAAAAAAA</Target>

1.TXT 中 <Target> </Target> 中间的字母是会变得,我想获取出这个字符串写到 2.txt 的<Target> </Target> 中间。。

求解。。。
发表于 2012-11-21 01:36:26 | 显示全部楼层
两个文本 <Target> </Target> 都只有一行的话  比较好写 最好把1和2的范本发上来看看
 楼主| 发表于 2012-11-21 02:16:25 | 显示全部楼层
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里的东西会变
 楼主| 发表于 2012-11-21 02:19:31 | 显示全部楼层
1.txt里面是个加密过的东西。不知道什么加密、!!!她会变得,我想运行把调出来,写到2.txt里面。
就是
1。里面 <Target>1111</Target>
写到
2.<NormalReplaceMemo2>1111</NormalReplaceMemo2>

1111 只是示意。。。是会变得需要读出来。
发表于 2012-11-21 02:28:06 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. for /f "delims=" %%a in ('findstr "<Target>.*</Target>" 1.txt') do (
  4.     set Target=%%a
  5. )

  6. for /f %%n in (' find /c /v "" ^< 2.txt ') do (
  7.     for /l %%a in (1 1 %%n) do (
  8.         set str=
  9.         set /p str=
  10.         if not defined str (
  11.             echo,
  12.         ) else if "!str:</Target>=!" neq "!str!" (
  13.             echo !Target!
  14.         ) else (
  15.             echo,!str!
  16.         )
  17.     )
  18. ) <2.txt >2.new

  19. move 2.new 2.txt

  20. pause
复制代码
发表于 2012-11-21 02:34:29 | 显示全部楼层
本帖最后由 tmplinshi 于 2012-11-21 02:38 编辑

sed 下载地址: http://bathome.net/thread-15605-1-4.html
  1. @echo off
  2. set sed=sed -n "s|^.*\(<Target>.*</Target>\).*$|\1|ip" 1.txt
  3. for /f "delims=" %%a in ('%sed%') do set t1=%%a
  4. sed -i "s|<Target>.*</Target>|%t1%|i" 2.txt
  5. pause
复制代码
 楼主| 发表于 2012-11-21 18:39:53 | 显示全部楼层
本帖最后由 tmplinshi 于 2012-11-21 18:46 编辑

多谢老大。。。都试过了,可以。
如果只替换2.txt中 <Target>adsdasdsadsadsa</Target>  的前两位,后面的保留呢?
发表于 2012-11-21 18:46:43 | 显示全部楼层
本帖最后由 tmplinshi 于 2012-11-21 18:57 编辑
多谢老大。。。都试过了,可以。
如果只替换2.txt中 adsdasdsadsadsa  的前两位,后面的保留呢?
weww000 发表于 2012-11-21 18:39



    是否是这个意思?

1.txt
<Target>123456</Target>


2.txt
<Target>abcdefg</Target>


结果为:
2.txt
<Target>123456cdefg</Target>


如果是这个意思的话,代码如下:
  1. @echo off
  2. set sed=sed -n "s|^.*<Target>\(.*\)</Target>.*$|\1|ip" 1.txt
  3. for /f "delims=" %%a in ('%sed%') do set t1=%%a
  4. sed -i -r "s|(<Target>)..(.*</Target>)|\1%t1%\2|i" 2.txt
复制代码
 楼主| 发表于 2012-11-21 19:18:16 | 显示全部楼层
控制字符截取2的是哪一个?2个字符?4个字符?
 楼主| 发表于 2012-11-21 19:19:57 | 显示全部楼层
看明白了。。。是..   ....
 楼主| 发表于 2012-11-21 19:51:08 | 显示全部楼层
创建多个快捷方式为什么只有第一个有效?其他的无效
发表于 2012-11-21 23:30:32 | 显示全部楼层
本帖最后由 tmplinshi 于 2012-11-21 23:31 编辑
创建多个快捷方式为什么只有第一个有效?其他的无效
weww000 发表于 2012-11-21 19:51



    请另外发一个帖子,因为这个问题与这个帖子没有关联。

    另外,你需要把代码贴出来,别人才能分析是什么原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 17:51 , Processed in 0.028694 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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