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

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 tmplinshi 于 2012-11-21 23:31 编辑
创建多个快捷方式为什么只有第一个有效?其他的无效
weww000 发表于 2012-11-21 19:51



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

    另外,你需要把代码贴出来,别人才能分析是什么原因。

TOP

返回列表