无忧启动论坛

标题: 已经解决 如何用批处理替换cmd中的指定字符 [打印本页]

作者: nnd76543    时间: 2012-10-19 09:16
标题: 已经解决 如何用批处理替换cmd中的指定字符
我有需求,用一个批处理同时完成对一个txt及cmd中的指定字符进行替换,如A.txt和B.cmd中的A:替换成B:
对TXT文档的替换已经收工了,可是对替换cmd中的指定字符却一筹莫展,请各位大侠帮忙!!谢谢

[ 本帖最后由 nnd76543 于 2012-10-19 16:42 编辑 ]
作者: pznpt    时间: 2012-10-19 11:48
纯批几乎不可能办到,试试下面的:
--------------------------分割线----------------------------
@echo off
more +4 "%~0">$.vbs
wscript /NoLogo $.vbs
del $.vbs&goto :eof
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile("b.cmd",1)
Str = Replace(File.ReadAll,"A:","B:")
FSO.CreateTextFile("bb.cmd",True).Write Str
--------------------------分割线----------------------------

保存为test.bat,与b.cmd放在同一位置,生成的bb.cmd为替换后的文本。
作者: nnd76543    时间: 2012-10-19 12:34
已经试验过了,非常好用!!谢谢DX了。
如果再提高要求,是否可以用人机交流的方式,将B.cmd中的A:替换成------》A:B:C:D:........Z:自由选择呢??嘻嘻。。。
作者: pznpt    时间: 2012-10-19 14:27
标题: 回复 #3 nnd76543 的帖子
加一个输入对话框就可以了
---------------------------------分割线--------------------------------------
@echo off
more +4 "%~0">"%Temp%\$.vbs"
wscript /NoLogo "%Temp%\$.vbs"
del "%Temp%\$.vbs"&goto :eof
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile("b.cmd",1)
Input = InputBox("输入替换后的字符"&vbCr&vbCr&"(取消=空)","输入","B:")
Str = Replace(File.ReadAll,"A:",Input)
FSO.CreateTextFile("bb.cmd",True).Write Str
---------------------------------分割线--------------------------------------

-----------------------------------------------------
抱歉,想复杂了,貌似纯批可以搞定:

@echo off
set /p In=输入替换后的字符:
(for /f "delims=" %%a in (b.cmd) do (
  set "str=%%a"
  setlocal enabledelayedexpansion
  echo,!str:A:=%In%!
  endlocal
))>bb.cmd

[ 本帖最后由 pznpt 于 2012-10-19 15:01 编辑 ]
作者: nnd76543    时间: 2012-10-19 15:03
太好了!!!
如何将A.txt和B.cmd中的A:都都如此办理呢?(同时替换成一样的------》A:B:C:D:........Z:自由选择)
莫怪我哦,菜鸟再一步步的跟DX学呢,这次的请求是终结了!!嘻嘻.......
作者: pznpt    时间: 2012-10-19 15:48
好吧,两种方法任选其一
  1. @echo off
  2. more +4 "%~0">"%Temp%\$.vbs"
  3. wscript /NoLogo "%Temp%\$.vbs"
  4. del "%Temp%\$.vbs"&goto :eof
  5. Set FSO = CreateObject("Scripting.FileSystemObject")
  6. Input = InputBox("输入替换后的字符"&vbCr&vbCr&"(取消=空)","输入","B:")
  7. Set File = FSO.OpenTextFile("a.txt",1)
  8. Str = Replace(File.ReadAll,"A:",Input)
  9. FSO.CreateTextFile("a1.txt",True).Write Str
  10. Set File = FSO.OpenTextFile("b.cmd",1)
  11. Str = Replace(File.ReadAll,"A:",Input)
  12. FSO.CreateTextFile("b1.cmd",True).Write Str
复制代码

  1. @echo off
  2. set /p In=请输入替换后的字符:
  3. for %%a in (a.txt b.cmd) do (
  4.   (for /f "delims=" %%b in (%%a) do (
  5.     set "str=%%b"
  6.     setlocal enabledelayedexpansion
  7.     echo,!str:A:=%In%!
  8.     endlocal
  9.   ))>%%~na1%%~xa
  10. )
复制代码

作者: nnd76543    时间: 2012-10-19 16:22
DX好,2个版本都试了,非常完满,谢谢,再次谢谢!!

[ 本帖最后由 nnd76543 于 2012-10-19 16:41 编辑 ]




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3