无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3400|回复: 6
打印 上一主题 下一主题

已经解决 如何用批处理替换cmd中的指定字符

[复制链接]
跳转到指定楼层
1#
发表于 2012-10-19 09:16:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我有需求,用一个批处理同时完成对一个txt及cmd中的指定字符进行替换,如A.txt和B.cmd中的A:替换成B:
对TXT文档的替换已经收工了,可是对替换cmd中的指定字符却一筹莫展,请各位大侠帮忙!!谢谢

[ 本帖最后由 nnd76543 于 2012-10-19 16:42 编辑 ]
7#
 楼主| 发表于 2012-10-19 16:22:12 | 只看该作者
DX好,2个版本都试了,非常完满,谢谢,再次谢谢!!

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

使用道具 举报

6#
发表于 2012-10-19 15:48:44 | 只看该作者
好吧,两种方法任选其一
  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. )
复制代码
回复

使用道具 举报

5#
 楼主| 发表于 2012-10-19 15:03:28 | 只看该作者
太好了!!!
如何将A.txt和B.cmd中的A:都都如此办理呢?(同时替换成一样的------》A:B:C:D:........Z:自由选择)
莫怪我哦,菜鸟再一步步的跟DX学呢,这次的请求是终结了!!嘻嘻.......
回复

使用道具 举报

4#
发表于 2012-10-19 14:27:25 | 只看该作者

回复 #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 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2012-10-19 12:34:36 | 只看该作者
已经试验过了,非常好用!!谢谢DX了。
如果再提高要求,是否可以用人机交流的方式,将B.cmd中的A:替换成------》A:B:C:D:........Z:自由选择呢??嘻嘻。。。
回复

使用道具 举报

2#
发表于 2012-10-19 11:48:03 | 只看该作者
纯批几乎不可能办到,试试下面的:
--------------------------分割线----------------------------
@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为替换后的文本。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-24 11:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表