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

[文本处理] 批处理怎样修改BAT文件的某一个字符串?

[复制链接]
 楼主| 发表于 2013-11-11 11:40:07 | 显示全部楼层
@set @n=0//&dir /a-d/b/s tiger.bat|cscript.exe -nologo -e:jscript "%~f0" &pause&exit/b
while (!WSH.StdIn.AtEndOfStream) {
    file = WSH.StdIn.ReadLine();
    fso = new ActiveXObject("Scripting.FileSystemObject");
    text = fso.OpenTextFile(file,1).ReadAll();
    text = text.replace(/^ *set tiger[^\r\n]+/m, "set tiger=3m arm=1m");
    fso.OpenTextFile(file,2).Write(text);
    fso = null;
}

我想把要修改的文件名称 和修改前后的值设置为参数 传入,该怎么写,大神教下?
tiger.bat  
set tiger
set tiger=3m arm=1m    这3个
发表于 2013-11-11 14:14:35 | 显示全部楼层
  1. @set @n=0//&dir /a-d/b/s tiger.bat|cscript.exe -nologo -e:jscript "%~f0" "tiger.bat" "set tiger" "set tiger=3m arm=1m" &pause&exit/b
复制代码
然后 里面 看下哦

  1. var file = WScript.Arguments(0);
  2. var str1 = WScript.Arguments(1);
  3. var str2 = WScript.Arguments(2);
  4. WScript.Echo(file + " " + str1 + " " + str2);
复制代码
发表于 2013-11-11 18:26:51 | 显示全部楼层
本帖最后由 apang 于 2013-11-11 18:32 编辑

把下面代码保存为test.bat
  1. @set @n=0//&dir /a-d/b/s "%~1"|cscript -nologo -e:jscript "%~f0" "%~2" "%~3" &pause&exit/b
  2. a = WScript.Arguments(0);
  3. b = WScript.Arguments(1);
  4. while (!WSH.StdIn.AtEndOfStream) {
  5.     file = WSH.StdIn.ReadLine();
  6.     fso = new ActiveXObject("Scripting.FileSystemObject");
  7.     re = new RegExp("^( *)" + a + "[^\\r\\n]+","im");
  8.     text = fso.OpenTextFile(file,1).ReadAll();
  9.     text = text.replace(re, "$1" + b);
  10.     fso.OpenTextFile(file,2).Write(text);
  11.     fso = null;
  12.     re = null;
  13. }
复制代码
然后:
  1. test.bat "tiger.bat" "set tiger" "set tiger=3m arm=1m"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 17:17 , Processed in 0.026469 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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