一些注册表数据值包含带有Windows路径的字符串,例如:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Test]
"30-Jan-19-15:49:55.31-23207"="C:\\Test folder\\Newfolder\\image 1 (2).png"
"30-Jan-19-16:46:50.12-19158"="C:\\Test folder\\Newfolder\\image1 (2).png"
"30-Jan-19-16:49:11.27-19621"="C:\\Test folder\\Newfolder\\image1(2).png"
"30-Jan-19-16:49:12.27-19623"="C:\\Test folder\\Newfolder\\Folder2"
"30-Jan-19-16:49:32.37-19663"="C:\\Test folder\\Newfolder\\Folder2\\image5.png"
"30-Jan-19-16:49:37.57-19163"="C:\\Test folder\\Newfolder\\Folder2\\image8.png"
"30-Jan-19-16:51:31.27-10621"="C:\\Test folder\\Newfolder2\\mytext1(2).txt"
"30-Jan-19-16:56:11.27-19111"="C:\\Test folder\\Newfolder2\\mytext2(3).txt"
"30-Jan-19-16:59:01.27-14521"="C:\\Test folder\\Newfolder3\\myaudio3.mp3"
"30-Jan-19-16:59:41.27-19135"="C:\\Test folder\\Newfolder3\\myaudio5.mp3"
我想找到与父文件夹匹配的值并将其删除。例如,我确实通过了文件夹C:\Test folder\Newfolder
,应该找到并删除此注册表数据:
"30-Jan-19-15:49:55.31-23207"="C:\\Test folder\\Newfolder\\image 1 (2).png"
"30-Jan-19-16:46:50.12-19158"="C:\\Test folder\\Newfolder\\image1 (2).png"
"30-Jan-19-16:49:11.27-19621"="C:\\Test folder\\Newfolder\\image1(2).png"
"30-Jan-19-16:49:12.27-19623"="C:\\Test folder\\Newfolder\\Folder2"
"30-Jan-19-16:49:32.37-19663"="C:\\Test folder\\Newfolder\\Folder2\\image5.png"
"30-Jan-19-16:49:37.57-19163"="C:\\Test folder\\Newfolder\\Folder2\\image8.png"
我尝试首先查找与指定字符串匹配的注册表值,例如pathtosearch=C:\Test folder\Newfolder
,但没有匹配的值。脚本有什么问题?以及如何更正找到的注册表值并删除它们?
@echo off
setlocal enabledelayedexpansion
set "val="
set "pathtosearch=C:\Test folder\Newfolder"
echo.
set "hkey=HKCU\Software\Test"
for /f "tokens=3*" %%a in ('%systemroot%\system32\reg.exe query %hkey%') do (
if "%%b"=="" (set "val=%%a") else (set "val=%%a %%b")
echo.!val!
echo %pathtosearch%
echo !val!|%systemroot%\system32\findstr.exe /xr /c:\"^%pathtosearch%\[^\]+$\" && (
echo "found"
) || (
echo "not found"
)
echo.
)
exit 0
答案 0 :(得分:0)
目前尚不清楚您要做什么,所以这是一个猜测:
@Echo Off
Set "SPath=C:\Test folder\Newfolder"
Set "URKey=HKCU\Software\Test"
Set "FPath="
For /F "Delims=" %%A In ('
""%__AppDir__%Reg.exe" Query "%URKey%" /F "%SPath%" /D 2>Nul|"%__AppDir__%Find.exe" /I "%SPath%""
') Do If Not Defined FPath Set "FPath=%%A"
If Defined FPath (Call Set "FPath=%SPath%%%FPath:*%SPath%=%%"
Echo Found) Else Echo Not Found
If Defined FPath Echo(%FPath%
Pause