From f27b3fbe6e2fd9a56fefd3ac7f3d4966397df8ca Mon Sep 17 00:00:00 2001 From: DESKTOP-AJSJJMA\Admin Date: Mon, 25 Jul 2022 23:33:00 +0530 Subject: 1.6 --- .../Activation_Troubleshoot.cmd | 886 +++++++++++++++++++++ 1 file changed, 886 insertions(+) create mode 100644 MAS/Separate-Files-Version/Activation_Troubleshoot.cmd (limited to 'MAS/Separate-Files-Version/Activation_Troubleshoot.cmd') diff --git a/MAS/Separate-Files-Version/Activation_Troubleshoot.cmd b/MAS/Separate-Files-Version/Activation_Troubleshoot.cmd new file mode 100644 index 0000000..4fcad36 --- /dev/null +++ b/MAS/Separate-Files-Version/Activation_Troubleshoot.cmd @@ -0,0 +1,886 @@ +@setlocal DisableDelayedExpansion +@echo off + + + +::============================================================================ +:: +:: This script is a part of 'Microsoft Activation Scripts' (MAS) project. +:: +:: Homepage: massgrave.dev +:: Email: windowsaddict@protonmail.com +:: +::============================================================================ + + + + +::======================================================================================================================================== + +:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows +:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows + +set "_cmdf=%~f0" +for %%# in (%*) do ( +if /i "%%#"=="r1" set r1=1 +if /i "%%#"=="r2" set r2=1 +) + +if exist %SystemRoot%\Sysnative\cmd.exe if not defined r1 ( +setlocal EnableDelayedExpansion +start %SystemRoot%\Sysnative\cmd.exe /c ""!_cmdf!" %* r1" +exit /b +) + +:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows + +if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 if not defined r2 ( +setlocal EnableDelayedExpansion +start %SystemRoot%\SysArm32\cmd.exe /c ""!_cmdf!" %* r2" +exit /b +) + +:: Set Path variable, it helps if it is misconfigured in the system + +set "PATH=%SystemRoot%\System32;%SystemRoot%\System32\wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\" +if exist "%SystemRoot%\Sysnative\reg.exe" ( +set "PATH=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%PATH%" +) + +:: Check LF line ending + +pushd "%~dp0" +>nul findstr /rxc:".*" "%~nx0" +if not %errorlevel%==0 ( +echo: +echo Error: This is not a correct file. It has LF line ending issue. +echo: +echo Press any key to exit... +pause >nul +popd +exit /b +) +popd + +::======================================================================================================================================== + +cls +color 07 +title Activation Troubleshoot + +set _elev= +if /i "%~1"=="-el" set _elev=1 + +set winbuild=1 +set "nul=>nul 2>&1" +set psc=powershell.exe +for /f "tokens=6 delims=[]. " %%G in ('ver') do set winbuild=%%G + +set _NCS=1 +if %winbuild% LSS 10586 set _NCS=0 +if %winbuild% GEQ 10586 reg query "HKCU\Console" /v ForceV2 2>nul | find /i "0x0" 1>nul && (set _NCS=0) + +call :_colorprep + +set cbs_log=%SystemRoot%\logs\cbs\cbs.log +set "nceline=echo: &echo ==== ERROR ==== &echo:" +set "eline=echo: &call :_color %Red% "==== ERROR ====" &echo:" +set "line=_________________________________________________________________________________________________" + +::======================================================================================================================================== + +if %winbuild% LSS 7600 ( +%nceline% +echo Unsupported OS version detected. +echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent. +goto at_done +) + +for %%# in (powershell.exe) do @if "%%~$PATH:#"=="" ( +%nceline% +echo Unable to find powershell.exe in the system. +goto at_done +) + +::======================================================================================================================================== + +:: Fix for the special characters limitation in path name + +set "_work=%~dp0" +if "%_work:~-1%"=="\" set "_work=%_work:~0,-1%" + +set "_batf=%~f0" +set "_batp=%_batf:'=''%" + +set _PSarg="""%~f0""" -el %_args% + +set "_ttemp=%temp%" + +setlocal EnableDelayedExpansion + +::======================================================================================================================================== + +echo "!_batf!" | find /i "!_ttemp!" 1>nul && ( +if /i not "!_work!"=="!_ttemp!" ( +%nceline% +echo Script is launched from the temp folder, +echo Most likely you are running the script directly from the archive file. +echo: +echo Extract the archive file and launch the script from the extracted folder. +goto at_done +) +) + +::======================================================================================================================================== + +:: Elevate script as admin and pass arguments and preventing loop + +%nul% reg query HKU\S-1-5-19 || ( +if not defined _elev %nul% %psc% "start cmd.exe -arg '/c \"!_PSarg:'=''!\"' -verb runas" && exit /b +%nceline% +echo This script require administrator privileges. +echo To do so, right click on this script and select 'Run as administrator'. +goto at_done +) + +::======================================================================================================================================== + +setlocal DisableDelayedExpansion + +:: Check desktop location + +set desktop= +for /f "skip=2 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do call set "desktop=%%b" +if not defined desktop for /f "delims=" %%a in ('%psc% "& {write-host $([Environment]::GetFolderPath('Desktop'))}"') do call set "desktop=%%a" + +if not defined desktop ( +%eline% +echo Desktop location was not detected, aborting... +goto at_done +) + +setlocal EnableDelayedExpansion + +::======================================================================================================================================== + +:at_menu + +cls +color 07 +title Activation Troubleshoot +mode con cols=77 lines=30 + +echo: +echo: +echo: +echo: +echo: _______________________________________________________________ +echo: +echo: [1] ReadMe +echo: ___________________________________________________ +echo: +echo: [2] Dism RestoreHealth +echo: [3] SFC Scannow +echo: +echo: [4] Rebuild Licensing Tokens +echo: [5] Clear Office vNext License +echo: ___________________________________________________ +echo: +echo: [6] Solution: Office is not genuine banner +echo: [0] Exit +echo: _______________________________________________________________ +echo: +call :_color2 %_White% " " %_Green% "Enter a menu option in the Keyboard :" +choice /C:1234560 /N +set _erl=%errorlevel% + +if %_erl%==7 exit /b +if %_erl%==6 start https://massgrave.dev/office-license-is-not-genuine &goto at_menu +if %_erl%==5 goto:clearvnext +if %_erl%==4 goto:retokens +if %_erl%==3 goto:sfcscan +if %_erl%==2 goto:dism_rest +if %_erl%==1 start https://massgrave.dev/troubleshoot.html &goto at_menu +goto :at_menu + +::======================================================================================================================================== + +:dism_rest + +cls +mode 98, 30 +title Dism /Online /Cleanup-Image /RestoreHealth + +if %winbuild% LSS 9200 ( +%eline% +echo Unsupported OS version Detected. +echo This command is supported only for Windows 8/8.1/10/11 and their Server equivalent. +goto :at_back +) + +set _int= +for %%a in (dns.msftncsi.com) do ( +if not defined _int (for /f "delims=[] tokens=2" %%# in ('ping -n 1 %%a') do if not [%%#]==[] set _int=1)) + +echo: +if defined _int ( +echo Checking Internet Connection [Connected] +) else ( +call :_color2 %_White% " " %Red% "Checking Internet Connection [Not connected]" +) + +echo %line% +echo: +echo Dism uses Windows Update to provide the files required to fix corruption. +echo This will take 5-15 minutes or more.. +echo %line% +echo: +echo Notes: +echo: +call :_color2 %_White% " - " %Gray% "Make sure the Internet is connected." +call :_color2 %_White% " - " %Gray% "Make sure the Windows update is properly working." +echo: +echo %line% +echo: +choice /C:29 /N /M "> [9] Continue [2] Go back : " +if %errorlevel%==1 goto at_menu + +cls +mode 110, 30 +echo: + +call :_stopservice TrustedInstaller +del /s /f /q "%SystemRoot%\logs\cbs\*.*" + +set _time= +for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a +echo: +echo Applying the command, +echo dism /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" /loglevel:4 +echo: +dism /online /cleanup-image /restorehealth /Logpath:"%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" /loglevel:4 + +if not exist "!desktop!\" ( +echo: +call :_color %Red% "Desktop location is not detected. Failed to copy logs on the dekstop." +goto :at_back +) + +if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% +copy /y /b "%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" "!desktop!\AT_Logs\RHealth_DISM_%_time%.txt" %nul% +copy /y /b "%cbs_log%" "!desktop!\AT_Logs\RHealth_CBS_%_time%.txt" %nul% +del /f /q "%SystemRoot%\Temp\RHealth_DISM_%_time%.txt" %nul% + +echo: +call :_color %Gray% "CBS and DISM logs are copied to the AT_Logs folder on the dekstop." +goto :at_back + +::======================================================================================================================================== + +:sfcscan + +cls +mode 98, 30 +title sfc /scannow + +echo: +echo %line% +echo: +echo System File Checker will repair missing or corrupted system files. +echo This will take 10-15 minutes or more.. +echo: +echo If SFC could not fix something, then run the command again to see if it may be able +echo to the next time. Sometimes it may take running the sfc /scannow command 3 times +echo restarting the PC after each time to completely fix everything that it's able to. +echo: +echo %line% +echo: +choice /C:29 /N /M "> [9] Continue [2] Go back : " +if %errorlevel%==1 goto at_menu + +cls +echo: + +call :_stopservice TrustedInstaller +del /s /f /q "%SystemRoot%\logs\cbs\*.*" + +set _time= +for /f %%a in ('%psc% "Get-Date -format HH_mm_ss"') do set _time=%%a +echo: +echo Applying the command, +echo sfc /scannow +echo: +sfc /scannow + +if not exist "!desktop!\" ( +echo: +call :_color %Red% "Desktop location is not detected. Failed to copy logs on the dekstop." +goto :at_back +) + +if not exist "!desktop!\AT_Logs\" md "!desktop!\AT_Logs\" %nul% + +copy /y /b "%cbs_log%" "!desktop!\AT_Logs\SFC_CBS_%_time%.txt" %nul% +findstr /i /c:"[SR]" %cbs_log% | findstr /i /v /c:verify >"!desktop!\AT_Logs\SFC_Main_%_time%.txt" + +echo: +call :_color %Gray% "CBS and main extracted logs are copied to the AT_Logs folder on the dekstop." +goto :at_back + +::======================================================================================================================================== + +:clearvnext + +cls +mode 98, 30 +title Clear Office vNext License + +echo: +echo %line% +echo: +echo This options will clear Office vNext ^(subscription^) license +echo: +echo You need to use this option when, +echo - KMS option is not activating office due to existing subscription license +echo - KMS option activated Office but Office activation page is not showing activated +echo: +echo %line% +echo: +choice /C:29 /N /M "> [9] Continue [2] Go back : " +if %errorlevel%==1 goto at_menu + +cls +mode con cols=115 lines=32 +%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" + + + +echo: +echo %line% +echo: +call :_color %Magenta% "Clearing Office vNext License" +echo: + +setlocal DisableDelayedExpansion +set "_locl=%LocalAppData%\Microsoft\Office\Licenses" +setlocal EnableDelayedExpansion +call :cleanfolder +set "_locl=%ProgramData%\Microsoft\Office\Licenses" +call :cleanfolder + +echo: +for %%# in ( +HKCU\Software\Microsoft\Office\16.0\Common\Licensing +HKCU\Software\Microsoft\Office\16.0\Common\Identity +) do ( +reg query %%# %nul% && ( +reg delete %%# /f %nul% && ( +echo Deleted Registry - %%# +) || ( +echo Failed to Delete - %%# +) +) || ( +echo Already Clean - %%# +) +) + +goto :at_back + +:cleanfolder + +2>nul dir /b /a "!_locl!\*" | %nul% findstr "^" && ( +pushd "!_locl!\" && ( +del /S /F /Q "!_locl!\*" +for /F "delims=" %%i in ('dir /b') do ( +RD /S /Q "%%i" %nul% +if not exist "!_locl!\%%i\" ( +echo Deleted Folder - !_locl!\%%i +) else ( +echo Failed To Delete - !_locl!\%%i +) +) +popd +) +) || ( +echo Already Clean - !_locl!\ +) +exit /b + +::======================================================================================================================================== + +:retokens + +cls +mode con cols=115 lines=32 +%nul% %psc% "&{$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=31;$B.Height=200;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}" +title Rebuild Licensing Tokens ^(SPP ^+ OSPP) + +echo: +echo %line% +echo: +echo Notes: +echo: +echo - It helps in troubleshooting activation issues. +echo: +call :_color2 %_White% " - " %Magenta% "This option will," +call :_color2 %_White% " " %Magenta% "- Deactivate Windows and Office, you will need to reactivate" +call :_color2 %_White% " " %Magenta% "- Uninstall Office licenses and keys" +call :_color2 %_White% " " %Magenta% "- Clear SPP-OSPP data.dat, tokens.dat, cache.dat" +call :_color2 %_White% " " %Magenta% "- Trigger the repair option for Office" +echo: +call :_color2 %_White% " - " %Red% "Apply it only when it is necessary." +echo: +echo %line% +echo: +choice /C:29 /N /M "> [9] Continue [2] Go back : " +if %errorlevel%==1 goto at_menu + + +cls +echo: +echo %line% +echo: +call :_color %Magenta% "Rebuilding SPP Licensing Tokens" +echo: + +call :scandat check + +if not defined token ( +call :_color %Red% "tokens.dat file not found." +) else ( +echo tokens.dat file: [%token%] +) + +echo: +echo Stopping sppsvc service... +call :_stopservice sppsvc + +echo: +call :scandat delete +call :scandat check + +if defined token ( +echo: +call :_color %Red% "Failed to delete .dat files." +echo: +) + +echo: +echo Reinstalling System Licenses [slmgr /rilc]... +cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% +if %errorlevel% NEQ 0 cscript //nologo %windir%\system32\slmgr.vbs /rilc %nul% +if %errorlevel% EQU 0 ( +echo [Successful] +) else ( +call :_color %Red% "[Failed]" +) + +call :scandat check + +echo: +if not defined token ( +call :_color %Red% "Failed to rebuilt tokens.dat file." +) else ( +call :_color %Green% "tokens.dat file was rebuilt successfully." +) + +::======================================================================================================================================== + +:: Rebuild OSPP Tokens + +echo: +echo %line% +echo: + +sc qc osppsvc %nul% || ( +echo: +call :_color %Magenta% "OSPP based Office is not installed" +call :_color %Magenta% "Skipping rebuilding OSPP tokens" +goto :cleanclipsvc +) + +call :_color %Magenta% "Rebuilding OSPP Licensing Tokens" +echo: + +call :scandatospp check + +if not defined token ( +call :_color %Red% "tokens.dat file not found." +) else ( +echo tokens.dat file: [%token%] +) + +echo: +echo Stopping osppsvc service... +call :_stopservice osppsvc + +echo: +call :scandatospp delete +call :scandatospp check + +if defined token ( +echo: +call :_color %Red% "Failed to delete .dat files." +echo: +) + +echo: +echo Starting osppsvc service to generate tokens.dat +call :_startservice osppsvc +call :scandatospp check +if not defined token ( +call :_stopservice osppsvc +call :_startservice osppsvc +timeout /t 3 %nul% +) + +call :scandatospp check + +echo: +if not defined token ( +call :_color %Red% "Failed to rebuilt tokens.dat file." +) else ( +call :_color %Green% "tokens.dat file was rebuilt successfully." +) + +::======================================================================================================================================== + +:cleanclipsvc + +:: This section is removed + +::======================================================================================================================================== + +:repairoffice + +echo: +echo %line% +echo: +call :_color %Magenta% "Repairing Office Licenses" +echo: + +for /f "skip=2 tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE') do set arch=%%b + +if /i "%arch%"=="ARM64" ( +echo: +echo ARM64 Windows Found. +echo You need to use repair option in Windows settings for Office. +echo: +start ms-settings:appsfeatures +goto :repairend +) + +if /i "%arch%"=="x86" ( +set arch=X86 +) else ( +set arch=X64 +) + +for %%# in (68 86) do ( +for %%A in (msi14 msi15 msi16 c2r14 c2r15 c2r16) do (set %%A_%%#=&set %%Arepair%%#=) +) + +set _68=HKLM\SOFTWARE\Microsoft\Office +set _86=HKLM\SOFTWARE\Wow6432Node\Microsoft\Office + +%nul% reg query %_68%\14.0\Common\InstallRoot /v Path && (set "msi14_68=Office 14.0 MSI x86/x64" & set "msi14repair68=%systemdrive%\Program Files\Common Files\microsoft shared\OFFICE14\Office Setup Controller\Setup.exe") +%nul% reg query %_86%\14.0\Common\InstallRoot /v Path && (set "msi14_86=Office 14.0 MSI x86" & set "msi14repair86=%systemdrive%\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\Office Setup Controller\Setup.exe") +%nul% reg query %_68%\15.0\Common\InstallRoot /v Path && (set "msi15_68=Office 15.0 MSI x86/x64" & set "msi15repair68=%systemdrive%\Program Files\Common Files\microsoft shared\OFFICE15\Office Setup Controller\Setup.exe") +%nul% reg query %_86%\15.0\Common\InstallRoot /v Path && (set "msi15_86=Office 15.0 MSI x86" & set "msi15repair86=%systemdrive%\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15\Office Setup Controller\Setup.exe") +%nul% reg query %_68%\16.0\Common\InstallRoot /v Path && (set "msi16_68=Office 16.0 MSI x86/x64" & set "msi16repair68=%systemdrive%\Program Files\Common Files\Microsoft Shared\OFFICE16\Office Setup Controller\Setup.exe") +%nul% reg query %_86%\16.0\Common\InstallRoot /v Path && (set "msi16_86=Office 16.0 MSI x86" & set "msi16repair86=%systemdrive%\Program Files (x86)\Common Files\Microsoft Shared\OFFICE16\Office Setup Controller\Setup.exe") +%nul% reg query %_68%\14.0\CVH /f Click2run /k && (set "c2r14_68=Office 14.0 C2R x86/x64" & set "c2r14repair68=") +%nul% reg query %_86%\14.0\CVH /f Click2run /k && (set "c2r14_86=Office 14.0 C2R x86" & set "c2r14repair86=") +%nul% reg query %_68%\15.0\ClickToRun /v InstallPath && (set "c2r15_68=Office 15.0 C2R x86/x64" & set "c2r15repair68=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\integratedoffice.exe") +%nul% reg query %_86%\15.0\ClickToRun /v InstallPath && (set "c2r15_86=Office 15.0 C2R x86" & set "c2r15repair86=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\integratedoffice.exe") +%nul% reg query %_68%\ClickToRun /v InstallPath && (set "c2r16_68=Office 16.0 C2R x86/x64" & set "c2r16repair68=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\OfficeClickToRun.exe") +%nul% reg query %_86%\ClickToRun /v InstallPath && (set "c2r16_86=Office 16.0 C2R x86" & set "c2r16repair86=%systemdrive%\Program Files\Microsoft Office 15\Client%arch%\OfficeClickToRun.exe") + +set uwp16= +if %winbuild% GEQ 10240 reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msoxmled.exe" %nul% && ( +dir /b "%ProgramFiles%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set uwp16=Office 16.0 UWP +dir /b "%ProgramW6432%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set uwp16=Office 16.0 UWP +dir /b "%ProgramFiles(x86)%\WindowsApps\Microsoft.Office.Desktop*" %nul% && set uwp16=Office 16.0 UWP +) + +set /a counter=0 +echo Checking installed Office versions... +echo: + +for %%# in ( +"%msi14_68%" +"%msi14_86%" +"%msi15_68%" +"%msi15_86%" +"%msi16_68%" +"%msi16_86%" +"%c2r14_68%" +"%c2r14_86%" +"%c2r15_68%" +"%c2r15_86%" +"%c2r16_68%" +"%c2r16_86%" +"%uwp16%" +) do ( +if not "%%#"=="""" ( +set insoff=%%# +set insoff=!insoff:"=! +echo [!insoff!] +set /a counter+=1 +) +) + +if %counter% GTR 1 ( +%eline% +echo Multiple office versions found. +echo It's recommended to install only one version of office. +echo ________________________________________________________________ +echo: +) + +if %counter% EQU 0 ( +echo: +echo Installed Office is not found. +goto :repairend +echo: +) else ( +echo: +call :_color %_Yellow% "A Window will popup, in that Window you need to select Repair Option..." +call :_color %_Yellow% "Press any key to continue..." +echo: +pause >nul +) + +if defined uwp16 ( +echo: +echo Note: Skipping repair for Office 16.0 UWP. +echo You need to use reset option in Windows settings for it. +echo ________________________________________________________________ +echo: +start ms-settings:appsfeatures +) + +set c2r14= +if defined c2r14_68 set c2r14=1 +if defined c2r14_86 set c2r14=1 + +if defined c2r14 ( +echo: +echo Note: Skipping repair for Office 14.0 C2R +echo You need to use Repair option in Windows settings for it. +echo ________________________________________________________________ +echo: +start appwiz.cpl +) + +if defined msi14_68 if exist "%msi14repair68%" echo Running - "%msi14repair68%" & "%msi14repair68%" +if defined msi14_86 if exist "%msi14repair86%" echo Running - "%msi14repair86%" & "%msi14repair86%" +if defined msi15_68 if exist "%msi15repair68%" echo Running - "%msi15repair68%" & "%msi15repair68%" +if defined msi15_86 if exist "%msi15repair86%" echo Running - "%msi15repair86%" & "%msi15repair86%" +if defined msi16_68 if exist "%msi16repair68%" echo Running - "%msi16repair68%" & "%msi16repair68%" +if defined msi16_86 if exist "%msi16repair86%" echo Running - "%msi16repair86%" & "%msi16repair86%" +if defined c2r15_68 if exist "%c2r15repair68%" echo Running - "%c2r15repair68%" REPAIRUI RERUNMODE & "%c2r15repair68%" REPAIRUI RERUNMODE +if defined c2r15_86 if exist "%c2r15repair86%" echo Running - "%c2r15repair86%" REPAIRUI RERUNMODE & "%c2r15repair86%" REPAIRUI RERUNMODE +if defined c2r16_68 if exist "%c2r16repair68%" echo Running - "%c2r16repair68%" scenario=Repair & "%c2r16repair68%" scenario=Repair +if defined c2r16_86 if exist "%c2r16repair86%" echo Running - "%c2r16repair86%" scenario=Repair & "%c2r16repair86%" scenario=Repair + +:repairend + +echo: +echo %line% +echo: +echo: +call :_color %Green% "Finished" + +::======================================================================================================================================== + +:at_back + +echo: +echo %line% +echo: +call :_color %_Yellow% "Press any key to go back..." +pause >nul +goto :at_menu + +::======================================================================================================================================== + +:at_done + +echo: +echo Press any key to exit... +pause >nul +exit /b + +::======================================================================================================================================== + +:_stopservice + +for %%# in (%1) do ( +sc query %%# | find /i "STOPPED" %nul% || net stop %%# /y %nul% +sc query %%# | find /i "STOPPED" %nul% || sc stop %%# %nul% +) +exit /b + +:_startservice + +for %%# in (%1) do ( +sc query %%# | find /i "RUNNING" %nul% || net start %%# /y %nul% +sc query %%# | find /i "RUNNING" %nul% || sc start %%# %nul% +) +exit /b + +::======================================================================================================================================== + +:scandat + +set token= +for %%# in ( +%Systemdrive%\Windows\System32\spp\store_test\2.0\ +%Systemdrive%\Windows\System32\spp\store\ +%Systemdrive%\Windows\System32\spp\store\2.0\ +%Systemdrive%\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Microsoft\SoftwareProtectionPlatform\ +) do ( + +if %1==check ( +if exist %%#tokens.dat set token=%%#tokens.dat +) + +if %1==delete ( +if exist %%# ( +%nul% dir /a-d /s "%%#*.dat" && ( +attrib -r -s -h "%%#*.dat" /S +del /S /F /Q "%%#*.dat" +) +) +) +) +exit /b + +:scandatospp + +set token= +for %%# in ( +%ProgramData%\Microsoft\OfficeSoftwareProtectionPlatform\ +) do ( + +if %1==check ( +if exist %%#tokens.dat set token=%%#tokens.dat +) + +if %1==delete ( +if exist %%# ( +%nul% dir /a-d /s "%%#*.dat" && ( +attrib -r -s -h "%%#*.dat" /S +del /S /F /Q "%%#*.dat" +) +) +) +) +exit /b + +::========================================================================================================================================\ + +:_color + +if %_NCS% EQU 1 ( +echo %esc%[%~1%~2%esc%[0m +) else ( +call :batcol %~1 "%~2" +) +exit /b + +:_color2 + +if %_NCS% EQU 1 ( +echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m +) else ( +call :batcol %~1 "%~2" %~3 "%~4" +) +exit /b + +::======================================= + +:: Colored text with pure batch method +:: Thanks to @dbenham and @jeb +:: stackoverflow.com/a/10407642 + +:batcol + +pushd %_coltemp% +if not exist "'" ("'" set /p "=.") +setlocal +set "s=%~2" +set "t=%~4" +call :_batcol %1 s %3 t +del /f /q "'" +del /f /q "`.txt" +popd +exit /b + +:_batcol + +setlocal EnableDelayedExpansion +set "s=!%~2!" +set "t=!%~4!" +for /f delims^=^ eol^= %%i in ("!s!") do ( + if "!" equ "" setlocal DisableDelayedExpansion + >`.txt (echo %%i\..\') + findstr /a:%~1 /f:`.txt "." + `.txt (echo %%i\..\') + findstr /a:%~3 /f:`.txt "." +