
- 帖子
- 121
- 积分
- 189
- 技术
- 0
- 捐助
- 0
- 注册时间
- 2019-2-18
|
[文本处理] 【已解决】批处理查找文件夹路径并替换注册表文件内路径?
本帖最后由 大地 于 2025-4-8 07:34 编辑
查找文件夹路径并替换注册表文件内路径
以下码在XP系统中能运行,本以为正确了,改成已解决,后发现在在win10中出错,无法运行,汗颜!!所以重新提交求助,望大神邦忙,感 谢。
批处理通过所有分区深层子目录中搜索,查到第一个文件夹PETOOLS后中止搜索,并把注册表1.reg中原有的路径C:\\PETOOLS替换为新的路径,注意:注册表路径是双斜杠\\,,单斜杠是无法导入注册表的,路径中没有空格也没特殊字符,也不需要搜索分区根目录,只要子目录,不要用wmic 也不要用poseerhsell 批处理代码如何写?
以下是代码在XP中能运行,在win10中出错:
@echo off
setlocal enabledelayedexpansion
set "target=PETOOLS"
set "regfile=1.reg"
set "found="
rem 遍历所有分区(C到Z)
for %%d in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist %%d:\ (
echo 正在搜索 %%d 盘...
rem 搜索子目录(排除根目录)
for /f "delims=" %%a in ('dir /s /b /ad %%d:\%target% 2^>nul') do (
set "path=%%a"
rem 验证是否为子目录(路径包含两级以上目录)
if not "%%~dpa"=="%%d:\" (
rem 转义路径中的单斜杠为双斜杠
set "newpath=!path:\=\\!"
set "found=!newpath!"
goto replace
)
)
)
)
:replace
if defined found (
echo 替换目标路径为: %found%
rem 创建临时文件并写入替换后的内容
(
for /f "usebackq delims=" %%i in ("%regfile%") do (
set "line=%%i"
set "line=!line:C:\\PETOOLS=%found%!"
echo !line!
)
) > "%regfile%.tmp.reg"
rem 替换原文件
move /y "%regfile%.tmp.reg" "%regfile%" > nul
echo SUCCESS
) else (
echo FAILED
)
endlocal
pause |
|