yjqd 发表于 2018-4-10 11:46:37

批处理修改注册表中的C:\和D:\为X:\,这个批处理怎么写呢

想用批处理修改注册表中的C:\和D:\为X:\,该如何写这个批处理

tt911 发表于 2018-4-10 12:02:00

键值 和 路径呢?

yjqd 发表于 2018-4-10 12:07:13

tt911 发表于 2018-4-10 12:02
键值 和 路径呢?

谢谢回复

不好意思
比如:


"CBSTestWDSLogFile"="D:\\BVTBin\\Tests\\installpackage\\cbstest\\x86\\CBSTestWDS.log"
"CBSTestWTTLogFile"="D:\\BVTBin\\Tests\\installpackage\\cbstest\\x86\\CBSTest-20101120-134853-784.wtl"

holley2008 发表于 2018-4-10 14:28:49

注册表修改一般使用reg add命令
@echo off
set regpath="HKEY_LOCAL_MACHINE\CBSTEST"
reg add %regpath% /v CBSTestWDSLogFile /treg_sz /d "X:\BVTBin\Tests\installpackage\cbstest\x86\CBSTestWDS.log" /f
reg add %regpath% /v CBSTestWTTLogFile /t reg_sz /d "X:\BVTBin\Tests\installpackage\cbstest\x86\CBSTest-20101120-134853-784.wtl" /f
根据需要修改并保存为bat运行即可。

yjqd 发表于 2018-4-10 14:36:46

holley2008 发表于 2018-4-10 14:28
注册表修改一般使用reg add命令

根据需要修改并保存为bat运行即可。

谢谢回复

假如只知道项名称,比如:HKEY_LOCAL_MACHINE\CBSTEST
怎么搜索出有D:\的数据并修改为X:\

holley2008 发表于 2018-4-10 14:54:37

yjqd 发表于 2018-4-10 14:36
谢谢回复

假如只知道项名称,比如:HKEY_LOCAL_MACHINE\CBSTEST


这就需要用到reg query命令 。判断并修改即可。
比如:
@echo off
set regpath=HKEY_LOCAL_MACHINE\CBSTEST
REG QUERY %regpath% /s|find "D:\\"
IF ERRORLEVEL 1 (
echo 此路径没有"D:\\".
) ELSE (
reg add xxxxxxxxxxx
)

yjqd 发表于 2018-4-11 10:26:55

holley2008 发表于 2018-4-10 14:54
这就需要用到reg query命令 。判断并修改即可。
比如:

谢谢回复

由于reg对注册表的操作要求特别多,批处理要考虑的方面特别多,并且如果要修改的地方多,批处理修改就较慢

昨天花了两个多小时才写了一个批处理,运行时出错很多

for /f "tokens=1,2,* delims= " %%a in ('REG QUERY HKLM\1 /S /F D:\^|findstr /v "搜索结束:"') do (
echo %%a|find "HKEY_LOCAL_MACHINE\1">nul&&set w=%%a
echo %%a|find "(默认)">nul&&set x=%%a&&set x=/ve||set x=/v %%a
set y=%%b
echo %%c|find "D:">nul&&set z=%%c
echo !w! !x! /t !y! /d !z!|find "D:">nul&&set z=!z:D:\=X:\!&&echo y|REG ADD !w! !x! /t !y! /d "!z!" /F
)

holley2008 发表于 2018-4-12 10:21:27

yjqd 发表于 2018-4-11 10:26
谢谢回复

由于reg对注册表的操作要求特别多,批处理要考虑的方面特别多,并且如果要修改的地方多,批 ...

看的我一脸大写的懵逼{:2_130:}

nttwqz 发表于 2018-4-13 21:22:25

楼主,你的需要没有说清楚,你是想修改一些特定的注册表呢?还是需要遍历整个注册表?

如果是一些特定的注册表,这个比较好弄。

如果是整个注册表,这个对于批处理来说比较麻烦,这涉及到

1. 尽可能的遍历整个注册表,查找含有相关字符的注册表,依据找到的数据判断所在的项,提取该键值所在项名,然后才是修改值。
2. 对于不能访问的注册表项,还需要调整权限
3. 鉴于修改的数量级比较大,可能需要加入日志系统,输出错误日志

这明显是个大工程,还是RegWorkshop来的简单。。。

yjqd 发表于 2018-4-13 22:46:50

nttwqz 发表于 2018-4-13 21:22
楼主,你的需要没有说清楚,你是想修改一些特定的注册表呢?还是需要遍历整个注册表?

如果是一些特定的 ...

谢谢回复

我自己运行批处理后,才发现数据读取出来容易,修改后要导进去太难了
比如要考虑扩充字符串、百分号等等
页: [1] 2
查看完整版本: 批处理修改注册表中的C:\和D:\为X:\,这个批处理怎么写呢