Значение пути поиска пакетного скрипта в реестре - PullRequest
0 голосов
/ 31 января 2019

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

1 Ответ

0 голосов
/ 01 февраля 2019

Не совсем понятно, что вы пытаетесь сделать, так что это предположение:

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...