Board logo

标题: [求助]延时环境变量不起作用 [打印本页]

作者: flying008     时间: 2006-12-11 22:15    标题: [求助]延时环境变量不起作用

请教……
偶有一个替换指定文本文件1.txt内容中所有123为789的批处理文件,里面用到了版主大大说的延时环境变量,但是这个批处理在XP和2000中运行均不起作用[同目录下的这个1.txt没有任何变化],而有的朋友说在他机子上可以,请问是什么问题?
代码如下:
echo
setlocal enabledelayedexpansion
for /f "delims=" %%i in (1.txt) do (
        set a=%%i
        set a=!a:123=789!
        echo !a!
)
pause
exit
作者: ccwan     时间: 2006-12-11 22:21
你的批处理只是在cmd窗口显示出内容,并不是替换1.txt中的内容
作者: NaturalJ0     时间: 2006-12-11 22:23
你没写对 1.txt 修改的语句,所以它没有任何变化。
把 echo !a! 改成 echo !a!>>2.txt
这样 2.txt 应该就是你所要的文件。
作者: ccwan     时间: 2006-12-11 22:24
http://www.cn-dos.net/forum/viewthread.php?tid=25506&fpage=2

这其中的内容符合你的要求。
作者: flying008     时间: 2006-12-12 00:57


  Quote:
Originally posted by NaturalJ0 at 2006-12-11 22:23:
你没写对 1.txt 修改的语句,所以它没有任何变化。
把 echo !a! 改成 echo !a!>>2.txt
这样 2.txt 应该就是你所要的文件。

改了之后只是生成了和1.txt内容一样的2.txt,没有任何变化。
作者: redtek     时间: 2006-12-12 01:03

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in (1.txt) do (
        set a=%%i
        set a=!a:123=789!
        echo !a! >> 2.txt
)
notepad 2.txt
(假定1.txt文件中只有普通字母和数字)

我测试上面这个代码没有问题啊~:)
可以更改,楼主再试一下~:)
作者: flying008     时间: 2006-12-12 01:50
狂晕……用了你的代码,再用其它的代码又可以了……
作者: flying008     时间: 2006-12-12 01:51
非常感谢6楼的和以上各位大大……
但是为什么用了3742668版主的代码无论如何也不行?
@echo off

    echo 去掉引号:
    call :replace 1.txt "

    echo.
    echo 替换字符:
    call :replace 1.txt "123" "789"

    pause>nul
goto :eof

:replace
    setlocal ENABLEDELAYEDEXPANSION
    for /f "tokens=1* delims=" %%i in (%1) do set var=%%i & echo !var:%2=%3!
    endlocal
goto :eof

[ Last edited by flying008 on 2006-12-12 at 02:02 AM ]
作者: ccwan     时间: 2006-12-12 02:09
你试试去掉引号
作者: flying008     时间: 2006-12-12 02:09
3742668版主的代码可以了,偶终于明白了是自己多了引号惹的祸,谢谢……

[ Last edited by flying008 on 2006-12-12 at 02:11 AM ]
作者: lxmxn     时间: 2006-12-12 05:22


  Quote:
用了你的代码,再用其它的代码又可以了……

  汗一个先。

  难道这世界真的有鬼? =_=!!

作者: flying008     时间: 2006-12-12 22:00
这个也要谢谢LXMXN了,一样的代码他也曾写过偶,不知什么原因,开始不起作用,后来又可以了……