[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
注册表文件中,hex(2) 是可扩充字符串类型(REG_EXPAND_SZ),一般用于字符串里面包含有系统环境变量的场合,比如包含 %WinDir% 等系统环境变量。

如果确定字符串不包含这些变量,可以这样:
  1. $srcFile = 'a.reg';   #源文件
  2. $dstFile = 'b.reg';   #目标文件
  3. $scriptBlock1 = {
  4.     param($a);
  5.     $s = $a.Value -replace '[\s\\]' -replace '00,00$';
  6.     $s = $s.Split(':', 2)[1];
  7.     $s = [regex]::Replace($s, '([0-9a-f]{2}),([0-9a-f]{2}),', $scriptBlock2);
  8.     return '="' + $s.Replace('\', '\\') + '"';
  9. }
  10. $scriptBlock2 = {
  11.     param($b);
  12.     return [char][int]('0x' + $b.Groups[2].Value + $b.Groups[1].Value);
  13. }
  14. $reg = '(?i)=hex\(2\):(?> *(?:[a-f0-9]{2},)+(?:\\\r\n)?)+00(?!,)';
  15. $str = (gc $srcFile -ReadCount 0) -join "`r`n";
  16. $str = [regex]::Replace($str, $reg, $scriptBlock1);
  17. sc $dstFile -Value $str -Enc Unicode;
  18. pause;
复制代码
2

评分人数

TOP

返回列表