삭제하고 싶은 레지스트리 키/값/항목 목록이 있습니다(기본적으로 REG DELETE 항목이 없는 아래 #3의 목록). 그대로 작동하지만 배치를 갖고 싶습니다 ...
I. %~dp0에 list.txt가 없으면 listfile.txt 자체를 작성합니다.
예:
set "ListFile=%TEMP%\ListFile.txt"
set "List=%~dp0list.txt"
if not exist "%List%" (
(
echo Some regisrtry key
echo Some registry value
echo Some registry subkey
echo No idea how it should all be written like
) >"%ListFile%"
)
II. REG QUERY를 사용하여 목록에 각 항목이 있는지 확인하고 ERRORLEVEL이 있는지 확인하세요.
존재한다면..
- REG 자체의 유효한 .reg로 내보내세요(문제가 발생할 경우 다시 가져올 수 있음).
예:
for /f %%A in (%src%) do (
if not exist "%bkp%\%%A" md "%bkp%\%%A"
reg export "%%A" "%bkp%\%%A\key.reg"
위의 내용이 특정 값이나 지정된 키 내의 모든 항목에서 작동하는지 잘 모르겠습니다.
목록과 .reg를 비교하세요.
일치하는 경우 REG DELETE /f 또는 REG DELETE /v /f 또는 REG DELETE /va /f를 적절하게 실행합니다.
REG DELETE "HKCU\Software\Google\Chrome" /f
REG DELETE "HKLM\Software\Google\Chrome" /f
REG DELETE "HKCU\Software\Policies\Google\Chrome" /f
REG DELETE "HKLM\Software\Policies\Google\Chrome" /f
REG DELETE "HKLM\Software\Policies\Google\Update" /f
REG DELETE "HKLM\Software\WOW6432Node\Google\Enrollment" /f
REG DELETE "HKLM\Software\WOW6432Node\Google\Update\ClientState\{430FD4D0-B729-4F61-AA34-91526481799D}" /v CloudManagementEnrollmentToken /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Policies" /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKCU\Software\Microsoft\WindowsSelfHost" /f
REG DELETE "HKLM\Software\Microsoft\WindowsSelfHost" /f
REG DELETE "HKLM\Software\Microsoft\Policies" /f
REG DELETE "HKCU\Software\Policies" /f
REG DELETE "HKLM\Software\Policies" /f
REG DELETE "HKLM\Software\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /f
REG DELETE "HKLM\Software\Policies\Microsoft\Edge" /va /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" /f
- cmd 및 %~dp0output.log에 키/값/항목이 처리 및 삭제되었음을 알리는 ECHO
만약 존재하지 않는다면..
- 존재하지 않는 cmd 및 %~dp0output.log에 대한 ECHO
"HKCU\Software\Google\Chrome" key does not exist
No entries can be found in "HKLM\Software\Policies\Microsoft\Edge"
Value DisableAntiSpyware cannot be found in "HKLM\Software\Policies\Microsoft\Windows Defender"
III. 일괄 처리로 생성된 목록을 삭제하지만 이미 존재하는 경우 삭제하지 않습니다.
IF EXIST "%ListFile%" ( DEL "%ListFile%" ) ELSE ( goto :eof )
발견한 스니펫을 수정하려고 시도했지만 for 루프가 어떻게 작동하는지 아직 이해하지 못했으며 목록이 하나만 있고 for 루프가 키인 경우에 적응하고 값(/v)인 경우에도 마찬가지입니다. ) 및/또는 지정된 키(/va) 내의 모든 항목만 처리해야 합니다.
아래의 현재 스크립트는 지금까지 작동하지만 위의 모든 사항이 누락되었습니다. 이를 추가하는 데 도움을 주시면 감사하겠습니다.
REG DELETE "HKCU\Software\Google\Chrome" /f
REG DELETE "HKLM\Software\Google\Chrome" /f
REG DELETE "HKCU\Software\Policies\Google\Chrome" /f
REG DELETE "HKLM\Software\Policies\Google\Chrome" /f
REG DELETE "HKLM\Software\Policies\Google\Update" /f
REG DELETE "HKLM\Software\WOW6432Node\Google\Enrollment" /f
REG DELETE "HKLM\Software\WOW6432Node\Google\Update\ClientState\{430FD4D0-B729-4F61-AA34-91526481799D}" /v CloudManagementEnrollmentToken /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Policies" /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKCU\Software\Microsoft\WindowsSelfHost" /f
REG DELETE "HKLM\Software\Microsoft\WindowsSelfHost" /f
REG DELETE "HKLM\Software\Microsoft\Policies" /f
REG DELETE "HKCU\Software\Policies" /f
REG DELETE "HKLM\Software\Policies" /f
REG DELETE "HKLM\Software\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /f
REG DELETE "HKLM\Software\Policies\Microsoft\Edge" /va /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" /f
@RD /S /Q "%ProgramFiles(x86)%\Google\Policies"
@RD /S /Q "%WinDir%\System32\GroupPolicy"
@RD /S /Q "%WinDir%\System32\GroupPolicyUsers"
ECHO.
gpupdate /force
ECHO.
ECHO Complete. Will shutdown..
pause>nul
shutdown.exe /r /t 00
EXIT /B 0
답변1
@echo off
for /f usebackq^tokens^=1-3*delims^=^" %%i in =;(
`type "%~f0" ^| findstr /b \^"`
);= do if "%%~l" == "" 2>nul =;(
reg query "%%~i" >nul && =;(
reg export "%%~i" "%%~k.reg" /y
reg delete "%%~i" /f
);= || echo/Key not exist "%%~i"
);= else if "%%~l" == "/va" 2>nul =;(
reg query "%%~i" >nul && =;(
reg export "%%~i" "%%~k.reg" /y
reg delete "%%~i" /va /f
);= || echo/Key not exist "%%~i"
);= else 2>nul =;(
reg query "%%~i" >nul && =;(
reg export "%%~i" "%%~l.reg" /y
reg delete "%%~i" /v "%%~j" /f
);= || echo/Key not exist "%%~i"
);=
>nul 2>&1 rd /s /q "%ProgramFiles(x86)%\Google\Policies" "%Windir%\System32\GroupPolicy" "%Windir%\System32\GroupPolicyUsers"
echo/ & gpupdate /force | findstr .
timeout -1 | echo/Complete. Will shutdown!..
echo/ & shutdown.exe /r /t 00
exit /b 0 || goto :eof
::--------------------------------------------------------------::
:: Your listing of registry keys/values/entries ::
::--------------------------------------------------------------::
"HKCU\Software\Policies" "HKCU_Policies"
"HKCU\Software\Google\Chrome" "HKCU_Chrome"
"HKCU\Software\Policies\Google\Chrome" "HKCU_Google_Chrome"
"HKCU\Software\Microsoft\WindowsSelfHost" "HKCU_Microsoft_WindowsSelfHost"
"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies" "HKCU_Microsoft_Policies"
"HKLM\Software\Policies" "HKLM_Policies"
"HKLM\Software\Google\Chrome" "HKLM_Chrome"
"HKLM\Software\Microsoft\Policies" "HKLM_Microsoft_Policies"
"HKLM\Software\Policies\Google\Chrome" "HKLM_Google_Chrome"
"HKLM\Software\Policies\Google\Update" "HKLM_Google_Update"
"HKLM\Software\Microsoft\WindowsSelfHost" "HKLM_Microsoft_WindowsSelfHost"
"HKLM\Software\Policies\Microsoft\Edge" "HKLM_Edge" /va
"HKLM\Software\Microsoft\Windows\CurrentVersion\Policies" "HKLM_CurrentVersion_Policies"
"HKLM\Software\Policies\Microsoft\Windows Defender" "HKLM_Windows_Defender" "DisableAntiSpyware"
"HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" "HKLM_WindowsStore_WindowsUpdate"
"HKLM\Software\WOW6432Node\Google\Enrollment" "HKLM_WOW6432Node_Google_Enrollment"
"HKLM\Software\WOW6432Node\Microsoft\Policies" "HKLM_WOW6432Node_Microsoft_Policies"
"HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies" "HKLM_WOW6432Node_CurrentVersion_Policies"
"HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" "HKLM_WOW6432Node_WindowsStore_WindowsUpdate"
"HKLM\Software\WOW6432Node\Google\Update\ClientState\{430FD4D0-B729-4F61-AA34-91526481799D}" "HKLM_WOW6432Node_Google_Update_ClientState" "CloudManagementEnrollmentToken"
1.일괄 저장소를 사용하여 files.reg에 대한 키와 이름(고유)을 나열하세요.
2.루프 를 사용하여 For /F
키 찾기/필터링
삼.For /F
이 루프 에서 "따옴표"를 구분 기호로 사용하도록 선택하세요.
4.루핑 명령에서 다음으로 시작하는 줄을 필터링합니다."
(인용):
for ...(' type "%~f0" ^|findstr /b \^" ')do...
5.각 사례를 처리하려면 %%l
에서 값(null, 같음 또는 다름) 발생을 사용하세요.if
6.&&
성공을 위해 연산자를 사용하면 reg query
레지스트리에 키/값이 있는지 알려줍니다.
6.&&
성공을 위해 연산자를 사용하면 reg query
레지스트리에 키/값이 있는지 알려줍니다.
관찰 1:하나의 명령으로 여러 폴더를 제거할 수 있습니다.
rd /q /s "FOLDER_01" "FOLDER_02" "FOLDER_nn"
rmdir /q /s "FOLDER_01" "FOLDER_02" "FOLDER_nn"
관찰 2:존재하지 않는 폴더를 제거할 수 있습니다. 이는 핵 우주 오류를 반환하지 않고 다음과 같은 경고만 반환합니다."시스템이 찾을 수 없습니다", 폴더가 존재하는지 여부에 관계없이 폴더를 삭제할 때 가능한 간단한 텍스트 메시지를 생략할 수 있으며 박쥐 실행도 중단되지 않습니다.
2>nul rmdir /q /s "FOLDER_01" "FOLDER_02" "FOLDER_nn"
if exist "FOLDER_01" rd /q /s "FOLDER_01"
if exist "FOLDER_02" rd /q /s "FOLDER_02"
if exist "FOLDER_nn" rd /q /s "FOLDER_nn"
관찰 삼:삭제 명령에도 동일하게 적용됩니다.
2>nul del /q "FILE_01" "FILE_02" "FILE_nn"
if exist "FILE_01" del /q "FILE_01"
if exist "FILE_02" del /q "FILE_02"
if exist "FILE_nn" del /q "FILE_nn"
추가 리소스: