IT인터넷
Windows 배치파일 자가삭제 설정
ヴァレンタイン
2023. 12. 10. 04:55
반응형
자가삭제 설정
Bat 또는 cmd 파일로 작성하면
실행 후 자가삭제가 가능하게 설정하려면 어떻게 해야 하나요?
@echo off
echo 기존의 윈도우 키를 삭제 합니다.
echo.
pause
slmgr.vbs /upk
echo.
echo.
echo 레지스트리에 있는 제품키를 삭제 합니다.
echo.
pause
slmgr.vbs /cpky
goto CDKEY
:CDKEY
set /p choice=홈에디션으로 변경을 하는 것이 맞으세요? 예(Y) / 아니오(N) :
if "%choice%" == "y" goto :YES
if "%choice%" == "n" goto :CDKEY
goto NO
:YES
echo.
echo.
echo 원도우10 제품키 변경 시작
echo.
pause
slmgr.vbs -ipk 제품키
echo.
echo.
echo 원도우10 제품인증 받기
echo.
pause
slmgr.vbs -ato
echo.
echo.
echo 원도우10 제품인증 확인
echo.
pause
slmgr.vbs -dlv
:NO
echo.
echo.
exit
· 해결방법
/* 해결방법 */
del %0
이렇게 하면 해결됩니다
· 안전하게
/* 안전하게 */
if exist "%0" (
del "%0"
)
웬만하면 이런 식으로 하시기 바랍니다.
배치파일에서 문제가 되는 부분이 여럿 있지만 중요한 것 중에 하나가
"경로명으로 가능한 문자가 인식 안 되는 현상"입니다.
대표적인 것이! % ^ & 이 4글자입니다.
저 글자들은 폴더명 파일명이 가능하지만 cmd에서
여러 명령어로도 쓰이는 글자인데 제대로 된 구분이 잘 안 되게 구성이 되어있습니다.
이게 상위경로명이나 폴더명에 있을 경우 적절한 처리가 되지 않으면 오류 나거나 버그 생깁니다.
즉 "잘못된 삭제"가 발생할 가능성이 있다는 거죠.(실행 안 되는 정도면 다행이겠죠.)
· 좀 더 안전하게
/* 좀 더 안전하게 */
setlocal DisableDelayedExpansion
cd /d %~dp0
if exist "%0" (
del "%~nx0"
)
SETLOCAL ENABLEDELAYEDEXPANSION
좀 더 안전하게 하려면 이게 좋습니다.
잘못하면 상위 파일 중에 겹치는 게 지워질 수 있으니까요.
유익한 정보였으면 좋겠습니다.
반응형