[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 8# apang
是的,非常好用。
另外想请求 appang 老师:之前一直请教的处理 Unicode 格式文件的脚本已经在使用中,加之这次请教的脚本,独立使用都没有问题。但我想将两者合并起来,怎么也不行,所以麻烦 apang 老师给费费心,我将两个脚本以及需要处理的相关文件贴上附件,请老师帮忙,非常感谢。

1. 脚本
[attach]7778[/attach]

2. 需要处理的文件(文件过大,给出下载地址)
http://pan.baidu.com/s/1qWoHOD2
76626yyn

TOP

这么大坨的描述,看了真头疼

TOP

回复 6# yuanyannian


    好吧,3楼修改下,应该没问题了

TOP

本帖最后由 apang 于 2014-10-12 22:24 编辑

保存为test.bat
  1. @set @n=0;// & cscript -nologo -e:jscript "%~0" & pause & exit
  2. fso = new ActiveXObject('Scripting.FileSystemObject');
  3. txt = fso.OpenTextFile('a.txt', 1, false, -1).ReadAll();
  4. re = /([\s\S]*?)(^".+" *=[\s\S]+?)(?=^")/mg;
  5. s = '';
  6. r =/^"(Programs|Start Menu|Desktop|Startup|AppData|Templates|Favorites)"/i;
  7. while ((ar = re.exec(txt)) !=null) {
  8.         if (r.test(ar[2])) {
  9.                 s += ar[1] + ar[2].replace(r, '"Common $1"');
  10.         } else s += ar[1];
  11. }
  12. s1='25,00,41,00,4c,00,4c,00,55,00,53,00,45,00,52,00,53,00,50,00,52,00,\\';
  13. s2='4f,00,46,00,49,00,4c,00,45,00,25,00';
  14. p1='25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,\\\\';
  15. p2='4c,00,45,00,25,00';
  16. re=new RegExp('(hex\\(2\\):)' + p1 + '( *\\r?\\n *)' + p2, 'ig');
  17. s = s.replace(re, '$1' + s1 + '$2' + s2);
  18. fso.OpenTextFile('b.txt', 2, true, -1).Write(s)
复制代码

TOP

本帖最后由 yuanyannian 于 2014-10-12 20:51 编辑

回复 3# apang
好用,谢谢。

是的,是一个意思。

我将代码修改如下:
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. txt = fso.OpenTextFile("a.reg", 1, , -1).ReadAll
  3. p = "NetHood|Personal|PrintHood|Recent|SendTo|Cookies|My Pictures"
  4. p1 = p & "|Local Settings|Local AppData|Cache|History"
  5. Set re = New RegExp
  6. re.Pattern = "([\s\S]*?)""(" & p1 & ")""[\s\S]+?(?:"")"
  7. re.Global = true
  8. re.IgnoreCase = true
  9. For Each m in re.Execute(txt)
  10.     str = str & """" & m.SubMatches(0)
  11. Next
  12. txt = Mid(str, 2)
  13. p2 = "Programs|Start Menu|Desktop|Startup|AppData|Templates|Favorites"
  14. Set re = New RegExp
  15. re.Pattern = """(" & p2 & ")"""
  16. re.Global = true
  17. re.IgnoreCase = true
  18. txt = re.Replace(txt, """Common $1""")
  19. w1 = "25,00,55,00,53,00,45,00,52,00,"       ''只将这些替换即可,因 ,\ 的位置不是固定的。
  20. w2 = "25,00,41,00,4c,00,4c,00,55,00,53,00,45,00,52,00,53,00,"
  21. Set re = New RegExp
  22. re.Pattern = "(hex\(2\):)" & w1
  23. re.Global = true
  24. re.IgnoreCase = true
  25. txt = re.Replace(txt, "$1" & w2)
  26. fso.OpenTextFile("b.reg", 2, true, -1).Write txt
复制代码
但有个问题:生成的 b.reg 中总有 Personal、SendTo、My Pictures 去除不了。
请 apang 老师给看一下。
76626yyn

TOP

回复 4# yuanyannian


    你的意思是除了列出的Programs|Start Menu|Desktop|Startup|AppData|Templates|Favorites 这7个键值做替换外,其余的键值统统删除?

如果是这样,那问题1岂不多余?

TOP

回复 3# apang
意思是除了列出的那些,其它的,比如 “NetHood"、"Personal"、"PrintHood"、"Recent" 等键值都删除。或者说如何删除某个键值。

谢谢 apang 老师!
76626yyn

TOP

本帖最后由 apang 于 2014-10-12 23:59 编辑

不明白问题2:“其余的都删除”是什么意思
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. txt = fso.OpenTextFile("a.txt", 1, , -1).ReadAll
  3. p = "Programs|Start Menu|Desktop|Startup|AppData|Templates|Favorites"
  4. Set re = New RegExp
  5. re.Pattern = "([\s\S]*?)(^"".+"" *=[\s\S]+?)(?=^"")"
  6. re.Global = true
  7. re.MultiLine = true
  8. For Each m in re.Execute(txt)
  9.         s1 = m.SubMatches(0)
  10.         s2 = ReReplace(m.SubMatches(1))
  11.         If m.SubMatches(1) <> s2 Then
  12.                 s = s & s1 & s2
  13.         Else s = s & s1
  14.         End If
  15. Next
  16. s1 = "25,00,41,00,4c,00,4c,00,55,00,53,00,45,00,52,00,53,00,"
  17. Set re = New RegExp
  18. re.Pattern = "(hex\(2\):)25,00,55,00,53,00,45,00,52,00,"
  19. re.Global = true
  20. re.IgnoreCase = true
  21. s = re.Replace(s, "$1" & s1)
  22. fso.OpenTextFile("b.txt", 2, true, -1).Write s
  23. Function ReReplace(str)
  24.         Set re = New RegExp
  25.         re.Pattern = """(" & p & ")"""
  26.         re.IgnoreCase = true
  27.         ReReplace = re.Replace(str, """Common $1""")
  28. End Function
复制代码

TOP

回复 1# yuanyannian
这题似乎有些麻烦?
76626yyn

TOP

返回列表