Board logo

标题: 如何来替换文本中的“字符?(也就是引号) [打印本页]

作者: hdshjffdd     时间: 2006-8-2 09:32    标题: 如何来替换文本中的“字符?(也就是引号)

如何来替换文本中的“字符?(也就是引号)
作者: bagpipe     时间: 2006-8-2 09:38
至于替换,用 %aa:"=xx% 这样的形式进行,不过你没有发出你要替换的文本,这里也是不好说的............
作者: hdshjffdd     时间: 2006-8-2 09:59
就比如说文本1.txt。内容如下
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
@echo off&call :rubbish %0%~x0&cd /d %*
:rubbish (if "%~$PATH:1"=="谢谢您" path=%~dp0;%path%&goto :eof)

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

想把文本中的所有“字符都消去,是怎么个做法?或者想把文本中的”谢谢您“换成”感谢您“,又是如何做法?
作者: bagpipe     时间: 2006-8-2 11:18
@echo off
setlocal
for /f "delims=" %%d in (1.txt) do (
set "a=%%d"
call set "b=%%a:"=%%"
call set "c=%%b:谢谢您=感谢您%%"
for /f "delims=" %%h in ('echo "%%c%%"') do echo %%~h >>tmp.txt
)


还真TMD够费劲的,不过不知道通用性怎么样?有待验证............
作者: 3742668     时间: 2006-8-2 11:29
为什么不直接启用延时的环境变量呢?
@echo off

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

    echo.
    echo 替换字符:
    call :replace 1.txt "谢谢您" "感谢您"

    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

作者: hxuan999     时间: 2006-11-23 02:49
这段代码写的不错,呵
作者: electronixtar     时间: 2006-11-23 07:05
楼上灌水灌的不错,呵呵(其实我也是来灌水的)
作者: flying008     时间: 2006-12-12 02:14
为什么偶测试3742668版主的代码时,不能在变量前后加上引号?否则代码不起作用?
感谢你   谢谢你      ==>有效
“感谢你” “谢谢你”   ==>无效
为什么?
作者: wydos     时间: 2006-12-12 03:35
我测试是成功的。
可能8楼的“字符出错了
作者: lxmxn     时间: 2006-12-12 04:01

  一个是中文的引号,一个是西文的引号。

作者: happy0909     时间: 2006-12-12 06:07
我是新手大家以后多多关照呀!!
作者: vkill     时间: 2006-12-12 07:36
用sed通用的多
作者: 3742668     时间: 2006-12-12 10:27
现在回头再看,觉得此贴方案不是很成熟健壮。
作者: shuaigeya     时间: 2007-3-10 02:04
彼有收获 学习了
作者: jianyaogao     时间: 2007-3-18 00:43
shou huo
作者: jianyaogao     时间: 2007-3-18 00:44
shou huo
作者: iamsea     时间: 2007-3-18 01:11
水平有限看不明白,先收起来以后慢慢研究
作者: star8289     时间: 2007-3-22 22:56
有收获,谢谢~
作者: enliang     时间: 2007-4-7 06:03
好像不能把字符替换成双引号哈(西文的)"
作者: enliang     时间: 2007-4-7 06:03
好像不能把字符替换成双引号哈(西文的)"
作者: sandsor     时间: 2007-7-26 18:43    标题: 学习...

学习ing.....
仍然在懵懂之中.....
作者: akin520     时间: 2007-8-2 12:17
顶一下,正在学习中
作者: akin520     时间: 2007-8-2 12:18
顶一下,正在学习中
作者: limishan     时间: 2007-9-2 02:33
搞不太明白,
作者: icyheart     时间: 2007-9-2 19:38


  Quote:
Originally posted by 3742668 at 2006-8-2 11:29 AM:
为什么不直接启用延时的环境变量呢?
[code]
@echo off

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

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

能解释一下for后面set var=%%i & echo !var:%2=%3!这句吗?由其是   var:%2=%3这句是什么意思呢?
作者: lxmxn     时间: 2007-9-9 03:17


  Quote:
Originally posted by icyheart at 2007-9-2 19:38:
能解释一下for后面set var=%%i & echo !var:%2=%3!这句吗?由其是   var:%2=%3这句是什么意思呢?

将 var 变量中的%2所表示的字符替换为%3表示的字符。其中%2和%3代表命令行的第2和第3个参数。
作者: onlysky     时间: 2007-11-25 21:15
不错,正在找,不过能否改成可批量替换某类型文件内容中的多个参数
作者: YoDe     时间: 2007-12-9 00:49    标题: 请教如何修改TXT里的字符

我想做一个批处理
其中1.txt如下
%ProgramFiles%\bhbsdrx.inf
%ProgramFiles%\bjifays.inf         
%ProgramFiles%\jguiwef.inf
%ProgramFiles%\meex.exe       
%ProgramFiles%\vmhrlbm.inf
%ProgramFiles%\Yahoo!       
%ProgramFiles%\ah.bat       
%ProgramFiles%\ah.exe       
%ProgramFiles%\internet.exe
%ProgramFiles%\SysInfo.wmp
%ProgramFiles%\SysInfo.tmp
bat文件如下
@echo off
for /f "delims==" %%a in (c:\我的音乐\1.txt) do (set %%a="%%a")
for /f "delims==" %%a in (c:\我的音乐\1.txt) do md %%a >NUL&&for /f "delims==" %%a in (c:\我的音乐\1.txt) do attrib %%a +r +s +a +h >NUL&&for /f "delims==" %%a in (c:\我的音乐\1.txt) do cacls %%a /c /e /d everyone >NUL
我想用批处理给1.txt的文件每行加个两个冒号 该如何做
比如
”%ProgramFiles%\SysInfo.tmp“
还有
for /f "delims==" %%a in (c:\我的音乐\1.txt) do (set %%a="%%a")
其中(set %%a="%%a")
是否要加转义符^该如何加?
(set %%a=^"%%a")
作者: stance     时间: 2008-4-21 15:34
受教!