목차

    반응형

    자가삭제 설정

    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

    좀 더 안전하게 하려면 이게 좋습니다.

    잘못하면 상위 파일 중에 겹치는 게 지워질 수 있으니까요.

    유익한 정보였으면 좋겠습니다.

    반응형
    모아씨는 여러분들의 방문으로 운영됩니다. 감사합니다.