标题: [已结]奇怪了,关于替换文本内容的问题
[打印本页]
作者: lililulula
时间: 2007-4-25 00:14
标题: [已结]奇怪了,关于替换文本内容的问题
for /f "tokens=* delims=" %%i in (1.txt) do set n=!%i:ab=12!&&echo !n!>>2.txt
将1.txt中有"ab"的字符替换为"12"然后输出到2.txt中,执行不成功,没搞明白.
昨天这个问题还弄成了,今天大清早过来又冒出来了,奇怪了
[
Last edited by bjsh on 2007-4-24 at 03:22 PM ]
作者: lxmxn
时间: 2007-4-25 00:53
To lililulula:
导致你上面的脚本没有成功的主要原因是没有启用变量延迟。
下面的这个脚本基本可以处理你的问题,但是对于特殊符号的处理可能仍然存在一些问题,而且大写的"AB"也会转化成"12".
@Echo off&Setlocal EnableDelayedExpansion
copy /y nul 2.txt >NUL
for /f "delims=: tokens=1*" %%a in ('findstr/n .* "a.txt"') do (
if NOT "%%b"=="" (set "str=%%b"
set str=!str:ab=12!
echo.!str!>>2.txt) else (echo.>>2.txt)
)
START 2.TXT
作者: bjsh
时间: 2007-4-25 03:40
Quote: |
for /f "tokens=* delims=" %%i in (1.txt) do set n=!%i:ab=12!&&echo !n!>>2.txt |
|
我想这一句set n=!%i:ab=12!你是想写成set n=!%%i:ab=12!的吧;
但是即便这样也是不对的;
首先 使用!!启用变量延迟需要在开头加setlocal enabledelayedexpansion
其次 利用set来替换变量; 其中的set n=!
_:ab=12! 标记_处应该为 已定义的环境变量; 而不能用%%i等变量.
作者: ansipeter
时间: 2007-4-25 03:53
@echo off&setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (1.txt) do set "n=%%i"&&set n=!n:ab=12!&&echo !n!>>2.txt
作者: lililulula
时间: 2007-4-25 03:55
多谢几位的帮助,特别是bjsh斑竹,昨天估计也是我没理解的情况下测试成功的,现已经搞明白了.
[
Last edited by lililulula on 2007-4-24 at 03:10 PM ]