Некоторые значения данных реестра содержат строки с путем к 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