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

[文本处理] [已解决]批处理怎样转换文本字符中的感叹号?

本帖最后由 yue 于 2011-5-23 22:57 编辑

----------------------------- 1.txt 中的代码如下: ---------------------------------------
123!456!789!abc!def
666!jjj55!ff!!!hh
------------------------------ 转换.bat 代码如下: ---------------------------------------
  1. for /f "tokens=*" %%i in ( .\1.txt) do (
  2.     set inpt=%%i
  3. set "var=!inpt:!=#!"
  4. >>".\2.txt" echo !var!
  5. )
复制代码
--------------------------------------------------------------------------------------------
目的: 想要在不改动 1.txt 中的内容下,而要把 1.txt 中的 "感叹号" 全部转换为 "#" 字符!!
转换出来的 2.txt 内容效果应该是:
123#456#789#abc#def
666#jjj55#ff###hh

问题: 经过 for 语句后感叹号消失了!

******   不知道哪位高手可以解决这个问题?  *******
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

1、当心%%i中的感叹号被当成变量
2、无法在延迟扩展变量中替换英文感叹号
  1. @echo off
  2. for /f "tokens=*" %%i in ( .\1.txt) do (
  3.     endlocal
  4.     set inpt=%%i
  5.     call set "var=%%inpt:!=#%%"
  6.     setlocal enabledelayedexpansion
  7.     >>".\2.txt" echo !var!
  8. )
复制代码
1

评分人数

TOP

  1. @echo off
  2. cd.>2.txt
  3. for /f "delims=" %%a in (1.txt) do (
  4.     set inpt=%%a
  5.     call set var=%%inpt:!=#%%
  6.     >>2.txt call echo,%%var%%
  7. )
复制代码
1

评分人数

TOP

试了以上两个方案; 还是没能替换掉啊!!

TOP

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了, 哈哈; 解决问题了

TOP

2# zm900612


这个代码没测试就贴出来了吧?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

6# Batcher


无语,当时没发现,今天试了下真的出错了,积累了一定的代码经验以后就经常不测试了,所以错误比较多...
看代码没发现问题,百思不得其解,最后才想到是%%i的原因,这参数真造孽

TOP

返回列表