标题: [其他] bat能不能:将16进制.reg转换为常见字符?谢谢 [打印本页]
作者: yyz219 时间: 2023-10-9 12:37 标题: bat能不能:将16进制.reg转换为常见字符?谢谢
本帖最后由 yyz219 于 2023-10-9 12:42 编辑
原来(16进制————不是固定的):用“FSCapture”打开.reg:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Imagine.PNG\shell\用“FSCapture”打开]
@="用“FSCapture”打开"
[HKEY_CLASSES_ROOT\Imagine.PNG\shell\用“FSCapture”打开\command]
@=hex(2):44,00,3a,00,5c,00,31,00,ff,7e,72,82,6f,8f,f6,4e,5c,00,1a,59,92,5a,53,\
4f,5c,00,93,62,fe,56,93,62,da,6e,a8,52,5c,00,93,62,da,6e,a8,52,46,00,53,00,\
43,00,61,00,70,00,74,00,75,00,72,00,65,00,39,00,37,00,5c,00,46,00,53,00,43,\
00,61,00,70,00,74,00,75,00,72,00,65,00,2e,00,65,00,78,00,65,00,20,00,25,00,\
31,00,00,00
*******************************************************************************
希望运行批处理后,得到:用“FSCapture”打开.reg:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Imagine.PNG\shell\用“FSCapture”打开]
@="用“FSCapture”打开"
[HKEY_CLASSES_ROOT\Imagine.PNG\shell\用“FSCapture”打开\command]
@="D:\\1绿色软件\\多媒体\\抓图抓滚动\\抓滚动FSCapture97\\FSCapture.exe %1"
作者: Batcher 时间: 2023-10-9 21:18
回复 1# yyz219 - reg query "HKEY_CLASSES_ROOT\Imagine.PNG\shell"
复制代码
作者: yyz219 时间: 2023-10-9 21:46
回复 yyz219
Batcher 发表于 2023-10-9 21:18
Microsoft Windows [版本 10.0.10586]
(c) 2016 Microsoft Corporation。保留所有权利。
X:\Windows\System32>reg query "HKEY_CLASSES_ROOT\Imagine.PNG\shell"
HKEY_CLASSES_ROOT\Imagine.PNG\shell\555
HKEY_CLASSES_ROOT\Imagine.PNG\shell\open
HKEY_CLASSES_ROOT\Imagine.PNG\shell\print
X:\Windows\System32>
作者: Batcher 时间: 2023-10-9 22:03
回复 3# yyz219 - reg query "HKEY_CLASSES_ROOT\Imagine.PNG\shell" /s
复制代码
作者: yyz219 时间: 2023-10-9 22:07
回复 4# Batcher
谢谢 试一试先
作者: yyz219 时间: 2023-10-9 22:13
回复 yyz219
Batcher 发表于 2023-10-9 22:03
可以看得:
HKEY_CLASSES_ROOT\Imagine.PNG\shell\555
(默认) REG_SZ 555
Icon REG_SZ D:\1绿色软件\多媒体\抓图抓滚动\抓滚动FSCapture97\FSCapture.exe
HKEY_CLASSES_ROOT\Imagine.PNG\shell\555\command
(默认) REG_EXPAND_SZ D:\1绿色软件\多媒体\抓图抓滚动\抓滚动FSCapture97\FSCapture.exe %1
作者: WHY 时间: 2023-10-10 00:08
注册表文件中,hex(2) 是可扩充字符串类型(REG_EXPAND_SZ),一般用于字符串里面包含有系统环境变量的场合,比如包含 %WinDir% 等系统环境变量。
如果确定字符串不包含这些变量,可以这样:- $srcFile = 'a.reg'; #源文件
- $dstFile = 'b.reg'; #目标文件
-
- $scriptBlock1 = {
- param($a);
- $s = $a.Value -replace '[\s\\]' -replace '00,00$';
- $s = $s.Split(':', 2)[1];
- $s = [regex]::Replace($s, '([0-9a-f]{2}),([0-9a-f]{2}),', $scriptBlock2);
- return '="' + $s.Replace('\', '\\') + '"';
- }
-
- $scriptBlock2 = {
- param($b);
- return [char][int]('0x' + $b.Groups[2].Value + $b.Groups[1].Value);
- }
-
- $reg = '(?i)=hex\(2\):(?> *(?:[a-f0-9]{2},)+(?:\\\r\n)?)+00(?!,)';
- $str = (gc $srcFile -ReadCount 0) -join "`r`n";
- $str = [regex]::Replace($str, $reg, $scriptBlock1);
- sc $dstFile -Value $str -Enc Unicode;
-
- pause;
复制代码
作者: yyz219 时间: 2023-10-10 06:44
注册表文件中,hex(2) 是可扩充字符串类型(REG_EXPAND_SZ),一般用于字符串里面包含有系统环境变量的场合 ...
WHY 发表于 2023-10-10 00:08
我试一试先 谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |