标题: [文本处理] [已解决]批处理怎样转换文本字符中的感叹号? [打印本页]
作者: yue 时间: 2011-5-23 21:40 标题: [已解决]批处理怎样转换文本字符中的感叹号?
本帖最后由 yue 于 2011-5-23 22:57 编辑
----------------------------- 1.txt 中的代码如下: ---------------------------------------
123!456!789!abc!def
666!jjj55!ff!!!hh
------------------------------ 转换.bat 代码如下: ---------------------------------------- for /f "tokens=*" %%i in ( .\1.txt) do (
- set inpt=%%i
- set "var=!inpt:!=#!"
- >>".\2.txt" echo !var!
- )
复制代码
--------------------------------------------------------------------------------------------
目的: 想要在不改动 1.txt 中的内容下,而要把 1.txt 中的 "感叹号" 全部转换为 "#" 字符!!
转换出来的 2.txt 内容效果应该是:
123#456#789#abc#def
666#jjj55#ff###hh
问题: 经过 for 语句后感叹号消失了!
****** 不知道哪位高手可以解决这个问题? *******
作者: CrLf 时间: 2011-5-23 21:52
1、当心%%i中的感叹号被当成变量
2、无法在延迟扩展变量中替换英文感叹号- @echo off
- for /f "tokens=*" %%i in ( .\1.txt) do (
- endlocal
- set inpt=%%i
- call set "var=%%inpt:!=#%%"
- setlocal enabledelayedexpansion
- >>".\2.txt" echo !var!
- )
复制代码
作者: Commander 时间: 2011-5-23 22:00
- @echo off
- cd.>2.txt
- for /f "delims=" %%a in (1.txt) do (
- set inpt=%%a
- call set var=%%inpt:!=#%%
- >>2.txt call echo,%%var%%
- )
复制代码
作者: yue 时间: 2011-5-23 22:24
试了以上两个方案; 还是没能替换掉啊!!
作者: yue 时间: 2011-5-23 22:30
for /f "tokens=*" %%i in ( .\1.txt) do (
endlocal
set inpt=%%i
call :dd
setlocal enabledelayedexpansion
>>".\2.txt" echo !var!
)
:dd
set var=%inpt:!=#%
哇!!我把 zm900612 的稍微改了下,这样就ok了, 哈哈; 解决问题了
作者: Batcher 时间: 2011-5-24 00:05
2# zm900612
这个代码没测试就贴出来了吧?
作者: CrLf 时间: 2011-5-24 12:23
6# Batcher
无语,当时没发现,今天试了下真的出错了,积累了一定的代码经验以后就经常不测试了,所以错误比较多...
看代码没发现问题,百思不得其解,最后才想到是%%i的原因,这参数真造孽
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |