@ECHO OFF REM ---------------------------START---------------------------- MODE 80, 25 TITLE Central AME Script & COLOR 70 SET "ver=v0.9" REM Allows for more flexibility with these two variables FOR /F "delims=" %%d in ('echo "%~dp0"') DO SET "dirPath=%%d" SET "dirPath=%dirPath:~1,-1%" FOR /F "delims=" %%e in ('echo "%~f0"') DO SET "scriptPath=%%e" SET "scriptPath=%scriptPath:~1,-1%" FOR /F %%A IN ('"prompt $H &echo on &for %%B in (1) do rem"') DO SET BS=%%A PUSHD "%dirPath%" CALL :AUX-GETUSERNAME IF /I "%~1"=="LangSet" GOTO DISPLANG-USERCHECK IF /I "%~1"=="kbLangSet" GOTO KBLANG-PRESET IF /I "%~1"=="updateFinished" GOTO AUX-UPDATEFINISHED :PRE-ADMINCHECK1 NET SESSION > NUL 2>&1 IF %ERRORLEVEL% GTR 0 GOTO PRE-ADMINCHECK2 CALL :AUX-ELEVATIONCHECK IF /I "%currentUsername%"=="RestartRequired" ( ECHO Running this script after a username change may cause issues^! & ECHO. CHOICE /C YN /N /M "Run anyways? (Y/N): " IF %ERRORLEVEL%==1 GOTO HOME-MAINMENU IF %ERRORLEVEL%==2 EXIT /B 0 ) GOTO HOME-MAINMENU :PRE-ADMINCHECK2 POWERSHELL "Start-Process '%scriptPath%' -Verb RunAs" > NUL 2>&1 IF %ERRORLEVEL% GTR 0 CHOICE /C YN /N /M "Elevation canceled, run with limited functionality? (Y/N): " IF %ERRORLEVEL%==1 SET lim=rem & GOTO HOME-MAINMENU IF %ERRORLEVEL%==2 EXIT /B 0 EXIT /B 0 REM -------------------------START-END-------------------------- REM ------------ REM MENU SECTION REM ------------ REM ----------------------------MENU---------------------------- :HOME-MAINMENU CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. %lim%ECHO [1] Change Username or Password %lim%ECHO [2] Change Lockscreen Image ECHO [3] Change Language Settings %lim%ECHO [4] Elevate User to Administrator %lim%ECHO [5] Login w^/o Typing Username ECHO. ECHO [0] Update Script %lim%ECHO [E] Extra ECHO [X] Exit & ECHO. & ECHO __________________________________________________________ & ECHO. CHOICE /C 123450EX8 /N /M "%BS% Choose a menu option: " %lim%IF %ERRORLEVEL%==1 GOTO USERPASS-MENU %lim%IF %ERRORLEVEL%==2 GOTO LOCKSCREEN-GRABIMAGE IF %ERRORLEVEL%==3 GOTO HOME-LANGUAGE %lim%IF %ERRORLEVEL%==4 GOTO ELEVATE-MENU %lim%IF %ERRORLEVEL%==5 GOTO NOUSERNAME-MENU IF %ERRORLEVEL%==6 GOTO AUX-UPDATE %lim%IF %ERRORLEVEL%==7 GOTO HOME-EXTRA IF %ERRORLEVEL%==8 EXIT /B 0 GOTO HOME-MAINMENU :HOME-EXTRA CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. %lim%ECHO [1] Enable Windows Script Host (Legacy) %lim%ECHO [2] Enable NCSI Active Probing (Legacy) %lim%ECHO. ECHO [0] Return to Menu & ECHO [X] Exit & ECHO. & ECHO __________________________________________________________ & ECHO. CHOICE /C 120X /N /M "%BS% Choose a menu option: " %lim%IF %ERRORLEVEL%==1 GOTO WSH-MENU %lim%IF %ERRORLEVEL%==2 GOTO NCSI-MENU IF %ERRORLEVEL%==3 GOTO HOME-MAINMENU IF %ERRORLEVEL%==4 EXIT /B 0 GOTO HOME-MAINMENU :HOME-LANGUAGE CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. %lim%ECHO [1] Change Display Language ECHO [2] Add Keyboard Language %lim%ECHO [3] Install Language Pack %lim%ECHO [4] Uninstall Language Pack ECHO. & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO. & ECHO __________________________________________________________ & ECHO. CHOICE /C 12340X /N /M "%BS% Choose a menu option: " %lim%IF %ERRORLEVEL%==1 SET "lpStatus=" & GOTO DISPLANG-MENUP1 IF %ERRORLEVEL%==2 GOTO KBLANG-LANGS %lim%IF %ERRORLEVEL%==3 SET "lpStatus=added"L & GOTO DISPLANG-MENUP1 %lim%IF %ERRORLEVEL%==4 SET "lpStatus=removed" & GOTO DISPLANG-MENUP1 IF %ERRORLEVEL%==5 GOTO HOME-MAINMENU IF %ERRORLEVEL%==6 EXIT /B 0 GOTO HOME-LANGUAGE REM --------------------------MENU-END-------------------------- REM ----------------- REM Primary Functions REM ----------------- REM --------------------------USERPASS-------------------------- :USERPASS-MENU CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. & ECHO [1] Change Username & ECHO [2] Change Password & ECHO [3] Change Administrator Password & ECHO. & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO. & ECHO __________________________________________________________ & ECHO. CHOICE /C 1230X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 GOTO USERPASS-USERNAME IF %ERRORLEVEL%==2 GOTO USERPASS-PASSWORD IF %ERRORLEVEL%==3 GOTO USERPASS-ADMINPASSWORD IF %ERRORLEVEL%==4 GOTO HOME-MAINMENU IF %ERRORLEVEL%==5 EXIT /B 0 :USERPASS-USERNAME CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. SET newUsername= SET /P newUsername="%BS% Enter the new Username, or enter 'Cancel' to quit: " IF /I "%newUsername%"=="Cancel" GOTO USERPASS-MENU IF "%newUsername%"=="" ( ECHO. & ECHO. & ECHO Input cannot be blank. & ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO USERPASS-MENU ) TIMEOUT /T 1 /NOBREAK > NUL FOR /F "tokens=3" %%A IN ('WMIC useraccount where "name='%currentUsername%'" rename '%newUsername%'') DO SET "wmicOutput=%%A" > NUL 2>&1 IF "%wmicOutput%"=="0;" SET "currentUsername=%newUsername%" & ECHO. & ECHO Username Changed Successfully & ECHO A restart is recommended. REM This should only happen if the user changes their username AND closes/re-opens the .cmd before restarting. IF "%wmicOutput%"=="Available." ECHO. & ECHO You must restart before changing your username again. IF "%wmicOutput%"=="9;" ECHO. & ECHO Invalid input. & SET "loc=USERPASS-MENU" ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU :USERPASS-PASSWORD CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Username/Password Changer ^| & ECHO. SET newPassword= SET /P newPassword="%BS% Enter the new Password, or enter 'Cancel' to quit: " IF /I "%newPassword%"=="Cancel" GOTO USERPASS-MENU IF "%newPassword%"=="" ( ECHO. & ECHO Input cannot be blank. :& ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO USERPASS-MENU ) TIMEOUT /T 1 /NOBREAK > NUL NET user "%currentUsername%" "%newPassword%" > NUL 2>&1 IF %ERRORLEVEL% LEQ 0 SET "currentPassword=%newPassword%" & ECHO. & ECHO. & ECHO Password Changed Successfully REM This should only happen if the user changes their username AND closes/re-opens the .cmd before restarting. IF %ERRORLEVEL% GTR 0 ECHO. & ECHO. & ECHO. & ECHO You must restart after changing your username. & ECHO. ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU :USERPASS-ADMINPASSWORD CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Username/Password Changer ^| & ECHO. SET newPassword= SET /P newPassword="%BS% Enter the new Password, or enter 'Cancel' to quit: " IF /I "%newPassword%"=="Cancel" GOTO USERPASS-MENU IF "%newPassword%"=="" ( ECHO. & ECHO Input cannot be blank. :& ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO USERPASS-MENU ) TIMEOUT /T 1 /NOBREAK > NUL NET user "Administrator" "%newPassword%" > NUL 2>&1 IF %ERRORLEVEL% LEQ 0 SET "currentPassword=%newPassword%" & ECHO. & ECHO. & ECHO Admin Password Changed Successfully REM This should only happen if the user changes their username AND closes/re-opens the .cmd before restarting. IF %ERRORLEVEL% GTR 0 ECHO. & ECHO. & ECHO. & ECHO Action failed. & ECHO. ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU REM ------------------------USERPASS-END------------------------ REM -------------------------LOCKSCREEN------------------------- :LOCKSCREEN-GRABIMAGE REM Original Author & Co-Author: Logan Darklock, lucid CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO Select your image & ECHO. DIR %SYSTEMDRIVE%\Users | FINDSTR "%possibleUserDir%" > NUL 2>&1 IF %ERRORLEVEL% LEQ 0 SET "ImgSelDir=\%possibleUserDir%" SET "IMAGEPATH=" & SET "IMAGEEXT=" SET LSPSComm=POWERSHELL -NoP -C "[System.Reflection.Assembly]::LoadWithPartialName('System.windows.forms')|Out-Null;$OFD = New-Object System.Windows.Forms.OpenFileDialog;$OFD.Multiselect = $True;$OFD.Filter = 'Image Files (*.jpg; *.jpeg; *.png; *.bmp; *.jfif)| *.jpg; *.jpeg; *.png; *.bmp; *.jfif';$OFD.InitialDirectory = '%SYSTEMDRIVE%\Users%ImgSelDir%';$OFD.ShowDialog()|out-null;$OFD.FileNames" REM Execute PowerShell command and get results in IMAGEPATH and IMAGEEXT variables FOR /F "delims=" %%I in ('%LSPSComm%') DO SET "IMAGEPATH=%%~I" & SET "IMAGEEXT=%%~xI" IF "%IMAGEPATH%" =="" ( ECHO. & ECHO You must select an image & ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU ) :LOCKSCREEN-DEPLOY TIMEOUT /T 1 /NOBREAK > NUL REM Copy wallpaper to the right spot TAKEOWN /F "%WINDIR%\Web\Screen\img100.jpg">NUL 2>&1 & TAKEOWN /F "%WINDIR%\Te\Web\Screen\img103.png">NUL 2>&1 & TAKEOWN /F "%WINDIR%\Web\Wallpaper\Windows\img0.jpg" > NUL 2>&1 ICACLS "%WINDIR%\Web\Screen\img100.jpg" /reSET>NUL & ICACLS "%WINDIR%\Web\Screen\img103.png" /reSET>NUL & ICACLS "%WINDIR%\Web\Wallpaper\Windows\img0.jpg" /reSET > NUL COPY "%IMAGEPATH%" "%WINDIR%\Web\Screen\img100.jpg" /y>NUL & COPY "%IMAGEPATH%" "%WINDIR%\Web\Screen\img103.png" /y>NUL & COPY "%IMAGEPATH%" "%WINDIR%\Web\Wallpaper\Windows\img0.jpg" /y > NUL REM Clear cache TAKEOWN /R /D Y /F "%PROGRAMDATA%\Microsoft\Windows\SystemData" > NUL ICACLS "%PROGRAMDATA%\Microsoft\Windows\SystemData" /reSET /t > NUL FOR /D %%x in ("%PROGRAMDATA%\Microsoft\Windows\SystemData\*") do ( FOR /D %%y in ("%%x\ReadOnly\LockScreen_*") do rd /s /q "%%y" ) ECHO. & ECHO Wallpaper changed successfully & ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU REM -----------------------LOCKSCREEN-END----------------------- REM -------------------------ELEVATION-------------------------- :ELEVATE-MENU CLS & ECHO %currentUsername%: %userStatus% & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. & ECHO [1] Elevate your user & ECHO [2] De-elevate your user & ECHO. & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO. & ECHO __________________________________________________________ & ECHO. CHOICE /C 120X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "elevMenu=1" & GOTO ELEVATE-ELEVATE IF %ERRORLEVEL%==2 SET "elevMenu=2" & GOTO ELEVATE-REVOKE IF %ERRORLEVEL%==3 GOTO HOME-MAINMENU IF %ERRORLEVEL%==4 EXIT /B 0 :ELEVATE-ELEVATE SET "cenStr=%currentUsername% is already an Administrator." & CALL :AUX-CENTERTEXT IF "%userStatus%"=="Elevated" ( CLS & ECHO %currentUsername%: %userStatus% & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. & ECHO. & ECHO%cenOut% & ECHO __________________________________________________________& ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO ELEVATE-MENU ) SET "cenStr=Elevating %currentUsername% to Administrator..." & CALL :AUX-CENTERTEXT CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO%cenOut% TIMEOUT /T 2 /NOBREAK > NUL NET localgroup administrators "%currentUsername%" /add > NUL 2>&1 IF %ERRORLEVEL% GTR 0 ECHO. & SET "elevFail=true" IF %ERRORLEVEL% LEQ 0 SET "userStatus=Elevated" GOTO ELEVATE-FINISH :ELEVATE-REVOKE SET "cenStr=%currentUsername% is not an Administator." & CALL :AUX-CENTERTEXT IF "%userStatus%"=="Not Elevated" ( CLS & ECHO %currentUsername%: %userStatus% & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. & ECHO%cenOut% & ECHO __________________________________________________________& ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO ELEVATE-MENU ) SET "cenStr=Revoking admin rights for %currentUsername%..." & CALL :AUX-CENTERTEXT CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO%cenOut% TIMEOUT /T 2 /NOBREAK > NUL 2>&1 NET localgroup administrators "%currentUsername%" /delete > NUL 2>&1 IF %ERRORLEVEL% GTR 0 ECHO. & SET "elevFail=true" IF %ERRORLEVEL% LEQ 0 SET "userStatus=Not Elevated" GOTO ELEVATE-FINISH :ELEVATE-FINISH IF "%elevFail%"=="true" ( ECHO. & ECHO.& ECHO Action failed. A restart may fix this. & ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU ) IF "%elevMenu%"=="1" SET "cenStr=%currentUsername% is now an Administrator" IF "%elevMenu%"=="2" SET "cenStr=Admin rights have been revoked for %currentUsername%" CALL :AUX-CENTERTEXT ECHO. & ECHO. & ECHO%cenOut% & ECHO A restart is needed to take effect. & ECHO __________________________________________________________ & ECHO. CHOICE /C YN /N /M "%BS% Would you like to restart now? (Y/N): " IF %ERRORLEVEL%==1 SHUTDOWN -R -T 0 & EXIT 0 IF %ERRORLEVEL%==2 GOTO HOME-MAINMENU REM -----------------------ELEVATION-END------------------------ REM --------------------------DISPLANG-------------------------- :DISPLANG-MENUP1 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. ECHO [1] Arabic (ar-SA) & ECHO [2] Bulgarian (bg-BG) & ECHO [3] Chineese [Simplified] (zh-CN) & ECHO [4] Chineese [Traditional] (zh-TW) & ECHO [5] Croatian (hr-HR) & ECHO [6] Czech (cs-CZ) & ECHO [7] Danish (da-DK) & ECHO. ECHO [N] Next Page & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO Page 1/6 & ECHO __________________________________________________________ & ECHO. CHOICE /C 1234567N0X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "langSel=ar-SA" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==2 SET "langSel=bg-BG" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==3 SET "langSel=zh-CN" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==4 SET "langSel=zh-TW" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==5 SET "langSel=hr-HR" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==6 SET "langSel=cs-CZ" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==7 SET "langSel=da-DK" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==8 GOTO DISPLANG-MENUP2 IF %ERRORLEVEL%==9 GOTO HOME-MAINMENU IF %ERRORLEVEL%==10 EXIT /B 0 :DISPLANG-MENUP2 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. ECHO [1] Dutch (nl-NL) & ECHO [2] English [US] (en-US) & ECHO [3] English [UK] (en-GB) & ECHO [4] Estonian (et-EE) & ECHO [5] Finnish (fi-FI) & ECHO [6] French [Canada] (fr-CA) & ECHO [7] French [France] (fr-FR) & ECHO. ECHO [N] Next Page & ECHO [P] Previous Page & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO Page 2/6 & ECHO __________________________________________________________ & ECHO. CHOICE /C 1234567NP0X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "langSel=nl-NL" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==2 SET "langSel=en-US" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==3 SET "langSel=en-GB" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==4 SET "langSel=et-EE" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==5 SET "langSel=fi-FI" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==6 SET "langSel=fr-CA" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==7 SET "langSel=fr-FR" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==8 GOTO DISPLANG-MENUP3 IF %ERRORLEVEL%==9 GOTO DISPLANG-MENUP1 IF %ERRORLEVEL%==10 GOTO HOME-MAINMENU IF %ERRORLEVEL%==11 EXIT /B 0 :DISPLANG-MENUP3 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. ECHO [1] German (de-DE) & ECHO [2] Greek (el-GR) & ECHO [3] Hebrew (he-IL) & ECHO [4] Hungarian (hu-HU) & ECHO [5] Italian (it-IT) & ECHO [6] Japanese (ja-JP) & ECHO [7] Korean (ko-KR) & ECHO. ECHO [N] Next Page & ECHO [P] Previous Page & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO Page 3/6 & ECHO __________________________________________________________ & ECHO. CHOICE /C 1234567NP0X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "langSel=de-DE" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==2 SET "langSel=el-GR" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==3 SET "langSel=he-IL" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==4 SET "langSel=hu-HU" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==5 SET "langSel=it-IT" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==6 SET "langSel=ja-JP" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==7 SET "langSel=ko-KR" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==8 GOTO DISPLANG-MENUP4 IF %ERRORLEVEL%==9 GOTO DISPLANG-MENUP2 IF %ERRORLEVEL%==10 GOTO HOME-MAINMENU IF %ERRORLEVEL%==11 EXIT /B 0 :DISPLANG-MENUP4 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. ECHO [1] Latvian (lv-LV) & ECHO [2] Lithuanian (lt-LT) & ECHO [3] Norwegian (nb-NO) & ECHO [4] Polish (pl-PL) & ECHO [5] Portugeese [Brazil] (pt-BR) & ECHO [6] Portugeese [Portugal] (pt-PT) & ECHO [7] Romanian (ro-RO) & ECHO. ECHO [N] Next Page & ECHO [P] Previous Page & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO Page 4/6 & ECHO __________________________________________________________ & ECHO. CHOICE /C 1234567NP0X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "langSel=lv-LV" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==2 SET "langSel=lt-LT" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==3 SET "langSel=nb-NO" & SET "dispDl=2.9" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==4 SET "langSel=pl-PL" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==5 SET "langSel=pt-BR" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==6 SET "langSel=pt-PT" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==7 SET "langSel=ro-RO" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==8 GOTO DISPLANG-MENUP5 IF %ERRORLEVEL%==9 GOTO DISPLANG-MENUP3 IF %ERRORLEVEL%==10 GOTO HOME-MAINMENU IF %ERRORLEVEL%==11 EXIT /B 0 :DISPLANG-MENUP5 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. ECHO [1] Russian (ru-RU) & ECHO [2] Serbian (sr-Latn-RS) & ECHO [3] Slovak (sk-SK) & ECHO [4] Slovenian (sl-SI) & ECHO [5] Spanish [Mexico] (es-MX) & ECHO [6] Spanish [Spain] (es-ES) & ECHO [7] Swedish (sv-SE) & ECHO. ECHO [N] Next Page & ECHO [P] Previous Page & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO Page 5/6 & ECHO __________________________________________________________ & ECHO. CHOICE /C 1234567NP0X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "langSel=ru-RU" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==2 SET "langSel=sr-Latn-RS" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==3 SET "langSel=sk-SK" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==4 SET "langSel=sl-SI" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==5 SET "langSel=es-MX" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==6 SET "langSel=es-ES" & SET "dispDl=2.5" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==7 SET "langSel=sv-SE" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==8 GOTO DISPLANG-MENUP6 IF %ERRORLEVEL%==9 GOTO DISPLANG-MENUP4 IF %ERRORLEVEL%==10 GOTO HOME-MAINMENU IF %ERRORLEVEL%==11 EXIT /B 0 :DISPLANG-MENUP6 CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. ECHO [1] Thai (th-TH) & ECHO [2] Turkish (tr-TR) & ECHO [3] Ukrainian (uk-UA) & ECHO. ECHO [P] Previous Page & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO Page 6/6 & ECHO __________________________________________________________ & ECHO. CHOICE /C 123P0X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "langSel=th-TH" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==2 SET "langSel=tr-TR" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==3 SET "langSel=uk-UA" & SET "dispDl=3.2" & GOTO DISPLANG-DOWNLOAD IF %ERRORLEVEL%==4 GOTO DISPLANG-MENUP5 IF %ERRORLEVEL%==5 GOTO HOME-MAINMENU IF %ERRORLEVEL%==6 EXIT /B 0 :DISPLANG-DOWNLOAD SETLOCAL REM Check if language pack is already installed CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. IF "%lpStatus%"=="removed" GOTO DISPLANG-LPREMOVE WHERE 7z.exe>NUL 2>&1 && SET "dispSkip0=rem " WHERE choco.exe>NUL 2>&1 && SET "dispChoco=true" DISM /Online /Get-Intl /English | FIND "Installed language(s): %langSel%" > NUL 2>&1 IF %ERRORLEVEL% LEQ 0 GOTO DISPLANG-USERCHECK FOR /F tokens^=2^ delims^=^" %%A IN ('TASKLIST /FI "IMAGENAME eq lpksetup.exe" /NH /FO csv') DO SET lpkStatus=%%A IF "%lpkStatus%"=="," ( ECHO. & ECHO. & ECHO All instances of lpksetup.exe must be closed. & ECHO __________________________________________________________ & ECHO. & ENDLOCAL & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU ) ECHO A ~%dispDl%GB Language Packs ISO must be downloaded & ECHO. CHOICE /C YN /N /M "%BS% Continue? (Y/N): " IF %ERRORLEVEL%==2 ENDLOCAL & GOTO HOME-MAINMENU PING -n 1 archlinux.org -w 20000 > NUL 2>&1 IF %ERRORLEVEL% GTR 0 ( ECHO. & ECHO. & ECHO An internet connection is required. & ECHO __________________________________________________________ & ECHO. & ENDLOCAL & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU ) FOR /F "tokens=2 delims==" %%A IN ('WMIC logicaldisk where "DeviceID='%~d0'" get FreeSpace /format:value') DO SET freeSpace=%%A SET "freeSpace=%freeSpace:~0,-10%" IF "%freeSpace%"=="" SET "freeSpace=1" IF %freeSpace% LSS 5 ( ECHO. & ECHO. & ECHO Not enough free disk space. & ECHO __________________________________________________________ & ECHO. & ENDLOCAL & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU ) IF EXIST "%dirPath%LangPacks.ISO" DEL /Q "%dirPath%LangPacks.ISO" IF EXIST "%dirPath%LangPacks" RMDIR /Q /S "%dirPath%LangPacks" REM If 7zip must be installed, there will not be enough space to display everything in 25 lines (script height) without this line %dispSkip0%CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| ECHO. & ECHO Download Progress IF "%dispDl%"=="2.5" CURL --range 0-2480000000 -L --progress-bar "https://software-download.microsoft.com/download/pr/19041.1.191206-1406.vb_release_CLIENTLANGPACKDVD_OEM_MULTI.iso" --output "%dirPath%LangPacks.ISO" IF "%dispDl%"=="2.9" CURL --range 0-2900000000 -L --progress-bar "https://software-download.microsoft.com/download/pr/19041.1.191206-1406.vb_release_CLIENTLANGPACKDVD_OEM_MULTI.iso" --output "%dirPath%LangPacks.ISO" IF "%dispDl%"=="3.2" CURL --range 0-3230000000 -L --progress-bar "https://software-download.microsoft.com/download/pr/19041.1.191206-1406.vb_release_CLIENTLANGPACKDVD_OEM_MULTI.iso" --output "%dirPath%LangPacks.ISO" FOR %%A IN ("%dirPath%LangPacks.ISO") DO SET "langISOSize=%%~zA" IF "%langISOSize"=="" SET "langISOSize=1" REM Detects size of ISO file, this essentially allows for a simple error detection. IF %langISOSize% LSS 700000 ( DEL /Q "%dirPath%LangPacks.ISO" > NUL ENDLOCAL GOTO AUX-UPDATEFAILED ) :DISPLANG-INSTALL %dispSkip0%IF NOT "%dispChoco%"=="true" ( %dispSkip0% ECHO. & ECHO. & ECHO 7zip or choclatey must be installed. & ECHO __________________________________________________________ & ECHO. & ENDLOCAL & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU ) %dispSkip0%ECHO. & ECHO Installing 7zip... & choco install -y --force --allow-empty-checksums "7zip" > NUL 7z e -y -o"%dirPath%LangPacks" "%dirPath%LangPacks.ISO" x64\langpacks\*.cab > NUL 2>&1 ECHO. & ECHO Installing language pack. This might take awhile & ECHO. FOR /F "tokens=2" %%A IN ('DATE /T') DO SET "dateAfter=%%A" SET "timeAfter=%TIME:~0,-3%" LPKSETUP /i %langSel% /p "%dirPath%LangPacks\Microsoft-Windows-Client-Language-Pack_x64_%langSel%.cab" /r > NUL :lpkInstLogLoop TIMEOUT /T 1 /NOBREAK > NUL POWERSHELL -NoP -C "$timeAfter = Get-Date -Date '%dateAfter% %timeAfter%'; Get-WinEvent -FilterHashtable @{Logname='Microsoft-Windows-LanguagePackSetup/Operational';StartTime=$timeAfter}" | FINDSTR "2014 2007" > NUL IF %ERRORLEVEL% LSS 1 ( %dispSkip0%ECHO Removing 7zip... & choco uninstall 7zip -y --force-dependencies --allow-empty-checksums>NUL & ECHO. DEL /Q "%dirPath%LangPacks.ISO">NUL & RMDIR /Q /S "%dirPath%LangPacks" & ECHO. & ECHO. & ECHO Action failed. & ECHO __________________________________________________________ & ECHO. & ENDLOCAL & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU ) POWERSHELL -NoP -C "$timeAfter = Get-Date -Date '%dateAfter% %timeAfter%'; Get-WinEvent -FilterHashtable @{Logname='Microsoft-Windows-LanguagePackSetup/Operational';StartTime=$timeAfter}" | FINDSTR "2000" > NUL IF %ERRORLEVEL% LSS 1 ( %dispSkip0%ECHO Removing 7zip... & choco uninstall 7zip -y --force-dependencies --allow-empty-checksums>NUL & ECHO. IF "%lpStatus%"=="added" DEL /Q "%dirPath%LangPacks.ISO">NUL & RMDIR /Q /S "%dirPath%LangPacks" & GOTO DISPLANG-LPCOMPLETE DEL /Q "%dirPath%LangPacks.ISO">NUL & RMDIR /Q /S "%dirPath%LangPacks" & GOTO DISPLANG-USERCHECK ) GOTO :lpkInstLogLoop :DISPLANG-USERCHECK IF /I "%~1"=="LangSet" WAITFOR /SI Golden>NUL 2>&1 & SET "langSel=%~2" & SET "makeKBDef=%~3" & GOTO DISPLANG-SETLANG CHOICE /C YN /N /M "%BS% Make default keyboard language? (Y/N): " IF %ERRORLEVEL%==2 SET "makeKBDef=false" REM The FOR command creates a new process ID, and thus cannot be used here POWERSHELL -NoP -C "(Get-WmiObject Win32_Process -Filter ProcessId=$PID).ParentProcessId" > %temp%\CentralAMEProcessID.txt FOR /F "delims=" %%A IN (%temp%\CentralAMEProcessID.txt) DO SET "scriptPID=%%A" & DEL "%temp%\CentralAMEProcessID.txt" REM Detects if the script is being run under the currently logged in user. If not it runs a second instance as the current user FOR /F tokens^=2^ delims^=^" %%A IN ('TASKLIST /FI "PID eq %scriptPID%" /FI "USERNAME eq %currentUsername%" /NH /FO csv') DO SET processRunOut=%%A IF NOT "%processRunOut%"=="," ( REM If %lim% = rem that means the script is NOT being run as administrator. There's a small chance someone attempts to run it as another non-admin user, REM this would be problematic as schtasks requires admin privilages. IF "%lim%"=="rem " ECHO. & ECHO. & ECHO Script must be run as the current user & ECHO or with administrator privilages. & ECHO __________________________________________________________ & ECHO. & ENDLOCAL & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU SETLOCAL ENABLEDELAYEDEXPANSION SCHTASKS /CREATE /tn SetDispLang /tr "CMD /C 'START /min '' '%scriptPath%' LangSet %langSel% %makeKBDef%'" /sc ONSTART /ru "%currentUsername%" /it /f > NUL REM RUNAS will work, however it requires the user to enter a password, and won't accept a blank one. This is a lot more simple and reliable SCHTASKS /RUN /tn SetDispLang > NUL WAITFOR Golden /T 10 > NUL 2>&1 IF !ERRORLEVEL! LSS 1 SCHTASKS /DELETE /tn SetDispLang /f>NUL & GOTO DISPLANG-COMPLETE SCHTASKS /DELETE /tn SetDispLang /f > NUL ENDLOCAL & ENDLOCAL & ECHO. & ECHO. & ECHO Action failed. & ECHO __________________________________________________________ & ECHO. & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU ) :DISPLANG-SETLANG ECHO. & ECHO Setting language... FOR /F "delims= " %%A IN ('POWERSHELL -NoP -C "Get-WinDefaultInputMethodOverride"') DO SET "possibleLangDef=%%A" IF NOT "%possibleLangDef%"=="" SET "currentLangDef=%possibleLangDef%" & SET "dispSkip1=rem " %dispSkip1%FOR /F "delims=" %%A IN ('POWERSHELL -NoP -C "(Get-WinUserLanguageList)[0].InputMethodTips"') DO SET "currentLangDef=%%A" SETLOCAL ENABLEDELAYEDEXPANSION REM Accounts for zero input methods. Very unlikely scenario POWERSHELL -NoP -c "(Get-WinUserLanguageList).InputMethodTips" | FINDSTR ":" > NUL 2>&1 IF %ERRORLEVEL% GTR 0 SET "dispSkip2=rem " %dispSkip2%FOR /F "delims=" %%A IN ('POWERSHELL -NoP -C "(Get-WinUserLanguageList).InputMethodTips"') DO SET "oldInputMethods=!oldInputMethods!;$LangList[0].InputMethodTips.Add('%%A')" POWERSHELL -NoP -C "Set-WinSystemLocale %langSel%; $LangList = New-WinUserLanguageList %langSel%%oldInputMethods%; Set-WinUserLanguageList $LangList -Force" REM Clears override IF "%makeKBDef%"=="" POWERSHELL -NoP -C "Set-WinDefaultInputMethodOverride" IF "%makeKBDef%"=="false" POWERSHELL -NoP -C "Set-WinDefaultInputMethodOverride "%currentLangDef%"" ENDLOCAL IF /I "%~1"=="LangSet" EXIT 0 :DISPLANG-COMPLETE ECHO. & ECHO. & ECHO Display language changed to %langSel% & ECHO A restart is needed to take effect. & ECHO __________________________________________________________ & ECHO. ENDLOCAL CHOICE /C YN /N /M "%BS% Would you like to restart now? (Y/N): " IF %ERRORLEVEL%==1 SHUTDOWN -R -T 0 & EXIT 0 IF %ERRORLEVEL%==2 GOTO HOME-MAINMENU :DISPLANG-LPCOMPLETE %dispSkip0%ECHO. & ECHO Removing 7zip... & choco uninstall 7zip.install -y --force > NUL %dispSkip0%choco uninstall 7zip -y --force > NUL ECHO. & ECHO. & ECHO LanguagePack %langSel% %lpStatus% successfully & ECHO A restart is recommended. & ECHO __________________________________________________________ & ECHO. ENDLOCAL PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU :DISPLANG-LPREMOVE SET "dispSkip0=rem " CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. FOR /F tokens^=2^ delims^=^" %%A IN ('TASKLIST /FI "IMAGENAME eq lpksetup.exe" /NH /FO csv') DO SET "lpkStatus=%%A" IF "%lpkStatus%"=="," ( ECHO. & ECHO. & ECHO All instances of lpksetup.exe must be closed. & ECHO __________________________________________________________ & ECHO. & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU ) FOR /F "tokens=2" %%A IN ('DATE /T') DO SET "dateAfter=%%A" SET "timeAfter=%TIME:~0,-3%" ECHO Uninstalling %langSel% LanguagePack... LPKSETUP /u %langSel% /r :lpkRemLogLoop TIMEOUT /T 1 /NOBREAK > NUL POWERSHELL -command "$timeAfter = Get-Date -Date '%dateAfter% %timeAfter%'; Get-WinEvent -FilterHashtable @{Logname='Microsoft-Windows-LanguagePackSetup/Operational';StartTime=$timeAfter}" | FINDSTR "2014 2008" > NUL IF %ERRORLEVEL% LSS 1 ECHO. & ECHO. & ECHO Action failed. & ECHO __________________________________________________________ & ECHO. & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU POWERSHELL -command "$timeAfter = Get-Date -Date '%dateAfter% %timeAfter%'; Get-WinEvent -FilterHashtable @{Logname='Microsoft-Windows-LanguagePackSetup/Operational';StartTime=$timeAfter}" | FINDSTR "2001" > NUL IF %ERRORLEVEL% LSS 1 GOTO DISPLANG-LPCOMPLETE GOTO lpkRemLogLoop REM ------------------------DISPLANG-END------------------------ REM ---------------------------KBLANG--------------------------- :KBLANG-LANGS SETLOCAL ENABLEDELAYEDEXPANSION FOR /F "tokens=1 delims=:" %%A IN ('FINDSTR /B /N /C:"REM DB-Languages" "%~f0"') DO SET /A dbStartLine=%%A SET /A count=0 SET "kbSub=false" FOR /F "usebackq tokens=1, 2, 4, 6, 8, 10, 12, 14 skip=%dbStartLine% delims=|" %%A IN ("%~f0") DO ( IF "%%A"=="REM DB-Corresponding Commands" GOTO KBLANG-CCOMMS IF "%%B"=="" GOTO KBLANG-CCOMMS IF NOT "%%B"=="spacer" SET /A count=!count!+1 & SET "lang!count!=%%B" IF "%%C"=="" GOTO KBLANG-CCOMMS IF NOT "%%C"=="spacer" SET /A "count=!count!+1" & SET "lang!count!=%%C" IF "%%D"=="" GOTO KBLANG-CCOMMS IF NOT "%%D"=="spacer" SET /A "count=!count!+1" & SET "lang!count!=%%D" IF "%%E"=="" GOTO KBLANG-CCOMMS IF NOT "%%E"=="spacer" SET /A "count=!count!+1" & SET "lang!count!=%%E" IF "%%F"=="" GOTO KBLANG-CCOMMS IF NOT "%%F"=="spacer" SET /A "count=!count!+1" & SET "lang!count!=%%F" REM Overflow protecton, allows for more than 5 items per DB line IF NOT "%%G"=="" SET /A "count=!count!+1" & SET "lang!count!=%%G" IF NOT "%%H"=="" SET /A "count=!count!+1" & SET "lang!count!=%%H" ) :KBLANG-CCOMMS FOR /F "tokens=1 delims=:" %%A IN ('FINDSTR /B /N /C:"REM DB-Corresponding Commands" "%~f0"') DO SET /A dbStartLine=%%A SET /A kbCCommCount=0 FOR /F "usebackq tokens=1, 2, 4, 6, 8, 10, 12, 14 skip=%dbStartLine% delims=|" %%A IN ("%~f0") DO ( IF "%%A"=="REM DB-Submenu Input Methods" GOTO KBLANG-PREMMS IF "%%B"=="" GOTO KBLANG-PREMMS IF NOT "%%B"=="spacer" SET /A kbCCommCount=!kbCCommCount!+1 & SET "kbComm!kbCCommCount!=SET kbLangSel=%%B" IF "%%C"=="" GOTO KBLANG-PREMMS IF NOT "%%C"=="spacer" SET /A "kbCCommCount=!kbCCommCount!+1" & SET "kbComm!kbCCommCount!=SET kbLangSel=%%C" IF "%%D"=="" GOTO KBLANG-PREMMS IF NOT "%%D"=="spacer" SET /A "kbCCommCount=!kbCCommCount!+1" & SET "kbComm!kbCCommCount!=SET kbLangSel=%%D" IF "%%E"=="" GOTO KBLANG-PREMMS IF NOT "%%E"=="spacer" SET /A "kbCCommCount=!kbCCommCount!+1" & SET "kbComm!kbCCommCount!=SET kbLangSel=%%E" IF "%%F"=="" GOTO KBLANG-PREMMS IF NOT "%%F"=="spacer" SET /A "kbCCommCount=!kbCCommCount!+1" & SET "kbComm!kbCCommCount!=SET kbLangSel=%%F" REM Overflow protecton, allows for more than 5 items per DB line IF NOT "%%G"=="" SET /A "count=!count!+1" & SET "lang!count!=SET kbLangSel=%%G" IF NOT "%%H"=="" SET /A "count=!count!+1" & SET "lang!count!=SET kbLangSel=%%H" ) :KBLANG-SUBLANGS SETLOCAL ENABLEDELAYEDEXPANSION FOR /F "tokens=1 delims=:" %%A IN ('FINDSTR /B /N /C:"REM DB-Submenu Input Methods" "%~f0"') DO SET /A dbStartLine=%%A SET /A count=0 SET "kbSub=true" FOR /F "usebackq tokens=1, 2, 4, 6, 8, 10, 12, 14, 16, 18 skip=%dbStartLine% delims=|" %%A IN ("%~f0") DO ( IF "%%A"=="REM DB-SubCorresponding Input Methods" GOTO KBLANG-CCOMMS IF "%%B"=="%kbLangSel%" ( IF "%%C"=="" GOTO KBLANG-SUBCOMMS SET /A count=!count!+1 & SET "lang!count!=%%C" IF "%%D"=="" GOTO KBLANG-SUBCCOMMS SET /A "count=!count!+1" & SET "lang!count!=%%D" IF "%%E"=="" GOTO KBLANG-SUBCCOMMS SET /A "count=!count!+1" & SET "lang!count!=%%E" IF "%%F"=="" GOTO KBLANG-SUBCCOMMS SET /A "count=!count!+1" & SET "lang!count!=%%F" IF "%%G"=="" GOTO KBLANG-SUBCCOMMS SET /A "count=!count!+1" & SET "lang!count!=%%G" IF "%%H"=="" GOTO KBLANG-SUBCCOMMS SET /A "count=!count!+1" & SET "lang!count!=%%H" IF "%%I"=="" GOTO KBLANG-SUBCCOMMS SET /A "count=!count!+1" & SET "lang!count!=%%I" IF "%%J"=="" GOTO KBLANG-SUBCCOMMS SET /A "count=!count!+1" & SET "lang!count!=%%J" ) ) :KBLANG-SUBCCOMMS FOR /F "tokens=1 delims=:" %%A IN ('FINDSTR /B /N /C:"REM DB-SubCorresponding Input Methods" "%~f0"') DO SET /A dbStartLine=%%A SET /A skbCCommCount=0 FOR /F "usebackq tokens=1, 2, 4, 6, 8, 10, 12, 14, 16, 18 skip=%dbStartLine% delims=|" %%A IN ("%~f0") DO ( IF "%%A"=="REM Marker" GOTO KBLANG-PREMMS IF "%%B"=="%kbLangSel%" ( IF "%%C"=="" GOTO KBLANG-PREMMS SET /A skbCCommCount=!skbCCommCount!+1 & SET "kbComm!skbCCommCount!=SET kbLangSel=%%C& GOTO KBLANG-PRESET" IF "%%D"=="" GOTO KBLANG-PREMMS SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%D& GOTO KBLANG-PRESET" IF "%%E"=="" GOTO KBLANG-PREMMS SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%E& GOTO KBLANG-PRESET" IF "%%F"=="" GOTO KBLANG-PREMMS SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%F& GOTO KBLANG-PRESET" IF "%%G"=="" GOTO KBLANG-PREMMS SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%G& GOTO KBLANG-PRESET" IF "%%H"=="" GOTO KBLANG-PREMMS SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%H& GOTO KBLANG-PRESET" IF "%%I"=="" GOTO KBLANG-PREMMS SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%I& GOTO KBLANG-PRESET" IF "%%J"=="" GOTO KBLANG-PREMMS SET /A "skbCCommCount=!skbCCommCount!+1" & SET "kbComm!skbCCommCount!=SET kbLangSel=%%J& GOTO KBLANG-PRESET" ) ) :KBLANG-PREMMS SET kbLangCount=0 SET /A "kbLangPages=%count%/9" SET /A "kbLangRemainder=%count%-(%kbLangPages%*9)"" IF "%kbLangRemainder%" GTR "0" SET /A kbLangPages=%kbLangPages%+1 SET kbLangPageLoc=1 :KBLANG-MMS REM Modular menu system SET "lELs=9" IF "%kbSub%"=="true" (SET "kb0Opt=Go Back") ELSE (SET "kb0Opt=Return to Menu") SET "kbDisablePrev=" & SET "lC10=N" & SET "kbDisableNext=" & SET "lC11=P" IF "%kbLangPageLoc%" EQU "1" SET "kbDisablePrev=rem " & SET "lC11=" SET "lC1=1" & SET "lC2=2" & SET "lC3=3" & SET "lC4=4" & SET "lC5=5" & SET "lC6=6" & SET "lC7=7" & SET "lC8=8" & SET "lC9=9" SET "kbLangSkip1=" & SET "kbLangSkip2=" & SET "kbLangSkip3=" & SET "kbLangSkip4=" & SET "kbLangSkip5=" & SET "kbLangSkip6=" & SET "kbLangSkip7=" & SET "kbLangSkip8=" IF "%kbLangPageLoc%"=="%kbLangPages%" ( SET "kbDisableNext=rem " & SET "lC10=" IF "%kbLangRemainder%" GTR "0" ( SET "lR1=1" SET "lELs=%kbLangRemainder%" IF NOT "%kbLangRemainder%" GTR "1" (SET "kbLangSkip1=rem ") ELSE (SET "lR2=2") IF NOT "%kbLangRemainder%" GTR "2" (SET "kbLangSkip2=rem ") ELSE (SET "lR3=3") IF NOT "%kbLangRemainder%" GTR "3" (SET "kbLangSkip3=rem ") ELSE (SET "lR4=4") IF NOT "%kbLangRemainder%" GTR "4" (SET "kbLangSkip4=rem ") ELSE (SET "lR5=5") IF NOT "%kbLangRemainder%" GTR "5" (SET "kbLangSkip5=rem ") ELSE (SET "lR6=6") IF NOT "%kbLangRemainder%" GTR "6" (SET "kbLangSkip6=rem ") ELSE (SET "lR7=7") IF NOT "%kbLangRemainder%" GTR "7" (SET "kbLangSkip7=rem ") ELSE (SET "lR8=8") IF NOT "%kbLangRemainder%" GTR "8" (SET "kbLangSkip8=rem ") ELSE (SET "lR9=9") SET "lC1=!lR1!" & SET "lC2=!lR2!" & SET "lC3=!lR3!" & SET "lC4=!lR4!" & SET "lC5=!lR5!" & SET "lC6=!lR6!" & SET "lC7=!lR7!" & SET "lC8=!lR8!" & SET "lC9=!lR9!" ) ) CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. SET /A "kbLangCount=%kbLangCount%+1" ECHO [1] !lang%kbLangCount%! & SET "kbCComm1=!kbComm%kbLangCount%!" %kbLangSkip1%SET /A "kbLangCount=%kbLangCount%+1" %kbLangSkip1%ECHO [2] !lang%kbLangCount%! & SET "kbCComm2=!kbComm%kbLangCount%!" %kbLangSkip2%SET /A "kbLangCount=%kbLangCount%+1" %kbLangSkip2%ECHO [3] !lang%kbLangCount%! & SET "kbCComm3=!kbComm%kbLangCount%!" %kbLangSkip3%SET /A "kbLangCount=%kbLangCount%+1" %kbLangSkip3%ECHO [4] !lang%kbLangCount%! & SET "kbCComm4=!kbComm%kbLangCount%!" %kbLangSkip4%SET /A "kbLangCount=%kbLangCount%+1" %kbLangSkip4%ECHO [5] !lang%kbLangCount%! & SET "kbCComm5=!kbComm%kbLangCount%!" %kbLangSkip5%SET /A "kbLangCount=%kbLangCount%+1" %kbLangSkip5%ECHO [6] !lang%kbLangCount%! & SET "kbCComm6=!kbComm%kbLangCount%!" %kbLangSkip6%SET /A "kbLangCount=%kbLangCount%+1" %kbLangSkip6%ECHO [7] !lang%kbLangCount%! & SET "kbCComm7=!kbComm%kbLangCount%!" %kbLangSkip7%SET /A "kbLangCount=%kbLangCount%+1" %kbLangSkip7%ECHO [8] !lang%kbLangCount%! & SET "kbCComm8=!kbComm%kbLangCount%!" %kbLangSkip8%SET /A "kbLangCount=%kbLangCount%+1" %kbLangSkip8%ECHO [9] !lang%kbLangCount%! & SET "kbCComm9=!kbComm%kbLangCount%!" ECHO. %kbDisableNext%ECHO [N] Next Page %kbDisablePrev%ECHO [P] Previous Page ECHO [0] %kb0Opt% & ECHO [X] Exit IF "%kbSub%"=="true" (ECHO.) ELSE (ECHO Page %kbLangPageLoc%/%kbLangPages%) ECHO __________________________________________________________ &ECHO. IF %kbLangPageLoc% LSS %kbLangPages% (SET /A kbLangCount=%kbLangCount%-9) ELSE (SET /A kbLangCount=%kbLangCount%-%kbLangRemainder%) CHOICE /C %lC1%%lC2%%lC3%%lC4%%lC5%%lC6%%lC7%%lC8%%lC9%%lC10%%lC11%0X /N /M "%BS% Choose a menu option: " SET "kbChoice=%ERRORLEVEL%" IF %kbChoice%==1 ENDLOCAL & %kbCComm1% %kbLangSkip1%IF %kbChoice%==2 ENDLOCAL & %kbCComm2% %kbLangSkip2%IF %kbChoice%==3 ENDLOCAL & %kbCComm3% %kbLangSkip3%IF %kbChoice%==4 ENDLOCAL & %kbCComm4% %kbLangSkip4%IF %kbChoice%==5 ENDLOCAL & %kbCComm5% %kbLangSkip5%IF %kbChoice%==6 ENDLOCAL & %kbCComm6% %kbLangSkip6%IF %kbChoice%==7 ENDLOCAL & %kbCComm7% %kbLangSkip7%IF %kbChoice%==8 ENDLOCAL & %kbCComm8% %kbLangSkip8%IF %kbChoice%==9 ENDLOCAL & %kbCComm9% SET /A "lEL10=%lELs%" %kbDisableNext%SET /A "lEL10=%lEL10%+1" %kbDisableNext%IF %kbChoice%==%lEL10% ( %kbDisableNext% SET /A kbLangPageLoc=%kbLangPageLoc%+1 %kbDisableNext% SET /A kbLangCount=%kbLangCount%+9 %kbDisableNext% GOTO KBLANG-MMS %kbDisableNext%) %kbDisablePrev%SET /A "lEL11=%lEL10%+1" & SET /A "lEL10=%lEL10%+1" %kbDisablePrev%IF %kbChoice%==%lEL11% ( %kbDisablePrev% SET /A kbLangPageLoc=%kbLangPageLoc%-1 %kbDisablePrev% SET /A kbLangCount=%kbLangCount%-9 %kbDisablePrev% GOTO KBLANG-MMS %kbDisablePrev%) SET /A "lEL12=%lEL10%+1" IF %kbChoice%==%lEL12% ( IF "%kbSub%"=="true" (ENDLOCAL & GOTO KBLANG-LANGS) ELSE (GOTO HOME-MAINMENU) ) SET /A "lEL13=%lEL10%+2" IF %kbChoice%==%lEL13% EXIT /B 0 GOTO KBLANG-MMS :KBLANG-DATABASE REM DB-Languages ::1 |United States| |Chinese| |Hindi (Devanagari) Traditional| |Spanish| |French| ::2 |Arabic| |Russian| |Bangla| |Portuguese| |Albanian| ::3 |Amharic| |Armenian| |Assamese - Inscript| |Azerbaijani| |Bashkir| ::4 |Belarusian| |Belgian| |Bosnian (Cyrillic)| |Buginese| |Bulgarian| ::5 |Canadian| |Central Atlas Tamazight| |Central Kurdish| |Cherokee| |Croatian| ::6 |Czech| |Danish| |Divehi| |Dutch| |Dzongkha| ::7 |Estonian| |Faeroese| |Finnish| |Futhark| |Georgian| ::8 |German| |Gothic| |Greek| |Greenlandic| |Guarani| ::9 |Gujarati| |Hausa| |Hebrew| |Hungarian| |Icelandic| ::10 |Igbo| |Indian| |Inuktitut| |Irish| |Italian| ::11 |Japanese NON-FUNCTIONAL| |Javanese| |Kannada| |Kazakh| |Khmer| ::12 |Konkoni (Devanagari) - INSCRIPT| |Korean| |Kyrgyz Cyrillic| |Lao| |Latin American| ::13 |Latvian| |Lisu| |Lithuanian| |Luxembourgish| |Macedonia| ::14 |Malayalam| |Maltese| |Maori| |Marathi| |Mongolian| ::15 |Myanmar| |N'ko| |Nepali| |New Tai Lue| |Norwegian| ::16 |Odia| |Ol Chiki| |Old Italic| |Osmanya| |Pashto (Afghanistan)| ::17 |Persian| |Phags-pa| |Polish| |Punjabi| |Romanian| ::18 |Sakha| |Sami| |Scottish Gaelic| |Serbian| |Sesotho sa Leboa| ::19 |Setswana| |Sinhala| |Slovak| |Slovenian| |Sora| ::20 |Sorbian| |Swedish| |Swiss| |Syriac| |Tai Le| ::21 |Tajik| |Tamil| |Tatar| |Telugu| |Thai| ::22 |Tibetan| |Tifinagh| |Tigrinya| |Turkish| |Turkmen| ::23 |Uyghur| |Ukrainian| |United Kingdom| |Urdu| |Uzbek| ::24 |Vietnamese| |Wolof| |Yakut| |Yoruba| REM DB-Corresponding Commands ::1 |US& GOTO KBLANG-SUBLANGS| |CHI& GOTO KBLANG-SUBLANGS| |0439:00010439& GOTO KBLANG-PRESET| |SPA& GOTO KBLANG-SUBLANGS| |040c:0000040c& GOTO KBLANG-PRESET| ::2 |ARA& GOTO KBLANG-SUBLANGS| |RUS& GOTO KBLANG-SUBLANGS| |BAN& GOTO KBLANG-SUBLANGS| |POR& GOTO KBLANG-SUBLANGS| |041c:0000041c& GOTO KBLANG-PRESET| ::3 |045e:{E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{8F96574E-C86C-4bd6-9666-3F7327D4CBE8}& GOTO KBLANG-PRESET| |ARM& GOTO KBLANG-SUBLANGS| |044d:0000044d& GOTO KBLANG-PRESET| |AZ& GOTO KBLANG-SUBLANGS| |046d:0000046d& GOTO KBLANG-PRESET| ::4 |0423:00000423& GOTO KBLANG-PRESET| |BEL& GOTO KBLANG-SUBLANGS| |141a:00000201a& GOTO KBLANG-PRESET| |0421:000b0c00& GOTO KBLANG-PRESET| |BUL& GOTO KBLANG-SUBLANGS| ::5 |CAN& GOTO KBLANG-SUBLANGS| |085f:0000085f& GOTO KBLANG-PRESET| |0429:00000429& GOTO KBLANG-PRESET| |CHE& GOTO KBLANG-SUBLANGS| |041a:0000041a& GOTO KBLANG-PRESET| ::6 |CZE& GOTO KBLANG-SUBLANGS| |0406:00000406& GOTO KBLANG-PRESET| |DIV& GOTO KBLANG-SUBLANGS| |0413:00000413& GOTO KBLANG-PRESET| |0C51:00000C51| ::7 |0425:00000425& GOTO KBLANG-PRESET| |0438:00000438& GOTO KBLANG-PRESET| |FIN& GOTO KBLANG-SUBLANGS| |0407:00120c00& GOTO KBLANG-PRESET| |GEO& GOTO KBLANG-SUBLANGS| ::8 |GER& GOTO KBLANG-SUBLANGS| |0407:000c0c00& GOTO KBLANG-PRESET| |GRE& GOTO KBLANG-SUBLANGS| |046f:0000046f& GOTO KBLANG-PRESET| |0474:00000474& GOTO KBLANG-PRESET| ::9 |0447:00000447& GOTO KBLANG-PRESET| |0468:00000468& GOTO KBLANG-PRESET| |040d:0000040d& GOTO KBLANG-PRESET| |HUN& GOTO KBLANG-SUBLANGS| |040f:0000040f& GOTO KBLANG-PRESET| ::10 |0470:00000470& GOTO KBLANG-PRESET| |4009:00004009& GOTO KBLANG-PRESET| |INU& GOTO KBLANG-SUBLANGS| |083C:000001809& GOTO KBLANG-PRESET| |ITA& GOTO KBLANG-SUBLANGS| ::11 |0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}& GOTO KBLANG-PRESET| |0421:00110c00& GOTO KBLANG-PRESET| |044b:0000044b& GOTO KBLANG-PRESET| |043f:0000043f& GOTO KBLANG-PRESET| |KHM& GOTO KBLANG-SUBLANGS| ::12 |0457:00000439& GOTO KBLANG-PRESET| |KOR& GOTO KBLANG-SUBLANGS| |0440:00000440& GOTO KBLANG-PRESET| |0454:00000454& GOTO KBLANG-PRESET| |080a:0000080a& GOTO KBLANG-PRESET| ::13 |LAT& GOTO KBLANG-SUBLANGS| |LIS& GOTO KBLANG-SUBLANGS| |LIT& GOTO KBLANG-SUBLANGS| |046e:0000046e& GOTO KBLANG-PRESET| |MAC& GOTO KBLANG-SUBLANGS| ::14 |044c:0000044c& GOTO KBLANG-PRESET| |MAL& GOTO KBLANG-SUBLANGS| |0481:00000481& GOTO KBLANG-PRESET| |044e:0000044e& GOTO KBLANG-PRESET| |MON& GOTO KBLANG-SUBLANGS| ::15 |0455:00010c00& GOTO KBLANG-PRESET| |0409:000090c00& GOTO KBLANG-PRESET| |0461:00000461& GOTO KBLANG-PRESET| |0409:00020c00& GOTO KBLANG-PRESET| |NOR& GOTO KBLANG-SUBLANGS| ::16 |0448:00000448& GOTO KBLANG-PRESET| |0409:d0c00& GOTO KBLANG-PRESET| |0409:000f0c00& GOTO KBLANG-PRESET| |0409:000e0c00& GOTO KBLANG-PRESET| |0463:00000463& GOTO KBLANG-PRESET| ::17 |PER& GOTO KBLANG-SUBLANGS| |0409:000a0c00& GOTO KBLANG-PRESET| |POL& GOTO KBLANG-SUBLANGS| |0446:00000446& GOTO KBLANG-PRESET| |ROM& GOTO KBLANG-SUBLANGS| ::18 |0485:00000485& GOTO KBLANG-PRESET| |SAM& GOTO KBLANG-SUBLANGS| |0809:00011809& GOTO KBLANG-PRESET| |SER& GOTO KBLANG-SUBLANGS| |046c:0000046c& GOTO KBLANG-PRESET| ::19 |0432:00000432& GOTO KBLANG-PRESET| |SIN& GOTO KBLANG-SUBLANGS| |SLO& GOTO KBLANG-SUBLANGS| |0424:00000424& GOTO KBLANG-PRESET| |0409:00100c00& GOTO KBLANG-PRESET| ::20 |SOR& GOTO KBLANG-SUBLANGS| |SWE& GOTO KBLANG-SUBLANGS| |SWI& GOTO KBLANG-SUBLANGS| |SYR& GOTO KBLANG-SUBLANGS| |0409:00030c00& GOTO KBLANG-PRESET| ::21 |0428:00000428& GOTO KBLANG-PRESET| |TAM& GOTO KBLANG-SUBLANGS| |TAT& GOTO KBLANG-SUBLANGS| |044a:0000044a& GOTO KBLANG-PRESET| |THA& GOTO KBLANG-SUBLANGS| ::22 |TIB& GOTO KBLANG-SUBLANGS| |TIF& GOTO KBLANG-SUBLANGS| |0473:{E429B25A-E5D3-4D1F-9BE3-0C608477E3A1}{3CAB88B7-CC3E-46A6-9765-B772AD7761FF}& GOTO KBLANG-PRESET| |TUR& GOTO KBLANG-SUBLANGS| |0442:00000442& GOTO KBLANG-PRESET| ::23 |UYG& GOTO KBLANG-SUBLANGS| |UKR& GOTO KBLANG-SUBLANGS| |UK& GOTO KBLANG-SUBLANGS| |0420:00000420| |0843:00000843| ::24 |VIE& GOTO KBLANG-SUBLANGS| |0488:00000488& GOTO KBLANG-PRESET| |0485:00000485& GOTO KBLANG-PRESET| |046a:0000056a& GOTO KBLANG-PRESET| REM DB-Submenu Input Methods :: |ARA| |Arabic (101)| |Arabic (102)| |Arabic (102 AZERTY)| :: |ARM| |Armenian Eastern| |Armenian Phonetic| |Armenian Typewriter| |Armenian Western| :: |AZE| |Azerbaijani (Standard)| |Azerbaijani Cyrillic| |Azerbaijani Latin| :: |BEL| |Belgian (Comma)| |Belgian (Period)| |Belgian French| :: |BAN| |Bangla (Bangladesh)| |Bangla (India)| |Bangla (India) - Legacy| :: |BUL| |Bulgarian| |Bulgarian Latin| |Bulgarian (Phonetic Layout)| |Bulgarian (Phonetic Traditonal)| |Bulgarian (Typewriter)| :: |CAN| |Canadian French| |Canadian French (Legacy)| |Canadian Multilingual Standard| :: |CHE| |Cherokee Nation| |Cherokee Nation Phonetic| :: |CHI| |Chineese (Simplified)| |Chineese (Traditional) NON-FUNCTIONAL| |Chineese (Traditional, Hong Kong S.A.R.)| |Chineese (Traditonal Macao S.A.R.)| |Chineese (Simplified, Singapore)| :: |CZE| |Czech| |Czech (QWERTY)| |Czech Programmers| :: |DIV| |Divehi Phonetic| |Divehi Typewriter| :: |FIN| |Finnish| |Finnish with Sami| :: |GEO| |Georgian| |Georgian (Ergonomic)| |Georgian (QWERTY)| |Georgian Ministry of Education and Science Schools| |Georgian (Old Alphabets)| :: |GER| |German| |German (IBM)| :: |GRE| |Greek| |Greek (220)| |Greek (220) Latin| |Greek (319)| |Greek (319) Latin| |Greek Latin| |Greek Polytonic| :: |HUN| |Hungarian| |Hungarian 101-key| :: |INU| |Inuktitut - Latin| |Inuktitut - Naqittaut| :: |ITA| |Italian| |Italian (142)| :: |KHM| |Khmer| |Khmer (NIDA)| :: |KOR| |Korean (Hangul)| |Korean (Old Hangul)| :: |LAT| |Latvian (Standard)| |Latvian (Legacy)| :: |LIS| |Lisu (Basic)| |Lisu (Standard)| :: |LIT| |Lithuanian| |Lithuanian IBM| |Lithuanian Standard| :: |MAC| |Macedonian (FYROM)| |Macedonian (FYROM) - Standard| :: |MAL| |Maltese 47-key| |Maltese 48-key| :: |MON| |Mongoloian (Mongolian Script - Legacy)| |Mongolian (Mongolian Script - Standard)| |Mongolian Cyrillic| :: |NOR| |Norwegian| |Norwegian with Sami| :: |PER| |Persian| |Persian (Standard)| :: |POL| |Polish (214)| |Polish (Programmers)| :: |POR| |Portuguese| |Portuguese (Brazilian ABNT)| |Portuguese (Brazilian ABNT2)| :: |ROM| |Romanian (Legacy)| |Romanian (Programmers) |Romanian (Standard)| :: |RUS| |Russian| |Russian - Mnemonic| |Russian (Typewriter)| :: |SAM| |Sami Extended Finland-Sweden| |Sami Extended Norway| :: |SER| |Serbian (Cyrillic)| |Serbian (Latin)| :: |SIN| |Sinhala| |Sinhala - wij 9| :: |SLO| |Slovak| |Slovak (QWERTY)| :: |SOR| |Sorbian Extended| |Sorbian Standard| |Sorbian Standard (Legacy)| :: |SPA| |Spanish (Spain)| |Spanish (Mexico)| |Spanish Variation| :: |SWE| |Swedish| |Swedish with Sami| :: |SWI| |Swiss French| |Swiss German| :: |SYR| |Syriac| |Syriac Phonetic| :: |TAM| |Tamil| |Tamil (99 Keyboard)| :: |TAT| |Tatar| |Tatar (Legacy)| :: |THA| |Thai Kedmanee| |Thai Kedmanee (non-ShiftLock)| |Thai Pattachote| |Thai Pattachote (non-ShiftLock)| :: |TIB| |Tibetan (PRC - Standard)| |Tibetan (PRC - Legacy)| :: |TIF| |Tifinagh (Basic)| |Tifinagh (Full)| :: |TUR| |Turkish F| |Turkish Q| :: |UYG| |Uyghur| |Uygher (Legacy)| |Uyghur (Greek 220)| :: |UKR| |Ukrainian| |Ukrainian (Enhanced)| :: |UK| |United Kingdom| |United Kingdom Extended| :: |US| |United States - English| |United States - International| |United States - Dvorak| |United States - Dvorak (Left Hand)| |United States - Dvorak (Right Hand)| :: |VIE| |Vietnamese| |Vietnamese Telex| REM DB-SubCorresponding Input Methods :: |ARA| |0401:00000401| |0401:00010401| |0401:00020401| :: |ARM| |042b:0000042b| |042b:0002042b| |042b:0003042b| |042b:0001042b| :: |AZE| |042c:0001042c| |042c:0000082c| |042c:0000042c| :: |BEL| |080c:0001080c| |080c:00000813| |080c:0000080c| :: |BAN| |0445:00000445| |0445:00020445| |0445:00010445| :: |BUL| |042b:0003042b| |042b:0001042b| |042b:0002042b| |042b:0004042b| |042b:0000042b| :: |CAN| |0c0c:00001009| |0c0c:00000c0c| |0c0c:00011009| :: |CHE| |045c:0000045c| |045c:0001045c| :: |CHI| |0804:{81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E}{FA550B04-5AD7-411f-A5AC-CA038EC515D7}| |0404:{B115690A-EA02-48D5-A231-E3578D2FDF80}{B2F9C502-1742-11D4-9790-0080C882687E}| |0404:00000c04| |0404:00001404| |0404:00001004| :: |CZE| |2000:00000405| |2000:00010405| |2000:00020405| :: |DIV| |0465:00000465| |0465:00010465| :: |FIN| |040b:0000040b| |040b:0001083b| :: |GEO| |0437:00020437| |0437:00010437| |0437:00030437| |0437:00040437| :: |GER| |0407:00000407| |0407:00010407| :: |GRE| |0408:00000408| |0408:00010408| |0408:00030408| |0408:00020408| |0408:00040408| |0408:00050408| |0408:00600408| :: |HUN| |040e:0000040e| |040e:0001040e| :: |INU| |085d:0000085d| |085d:0001045d| :: |ITA| |0410:00000410| |0410:00010410| :: |KHM| |0453:00000453| |0453:00010453| :: |KOR| |0412:{A028AE76-01B1-46C2-99C4-ACD9858AE02F}{B5FE1F02-D5F2-4445-9C03-C568F23C99A1}| |0412:{a1e2b86b-924a-4d43-80f6-8a820df7190f}{b60af051-257a-46bc-b9d3-84dad819bafb}| :: |LAT| |0426:00020426| |0426:00010426| :: |LIS| |0409:00070c00| |0409:00080c00| :: |LIT| |0427:00010427| |0427:00000427| |0427:00020427| :: |MAC| |042f:0000042f| |042f:0001042f| :: |MAL| |043a:0000043a| |043a:0001043a| :: |MON| |0850:00000850| |0850:00020850| |0850:00000450| :: |NOR| |0814:00000414| |0814:0000043b| :: |PER| |0429:00000429| |0429:00050429| :: |POL| |0415:00010415| |0415:00000415| :: |POR| |0816:00000816| |0816:00000416| |0816:00010416| :: |ROM| |0418:00000418| |0418:00020418| |0418:00010418| :: |RUS| |0419:00000419| |0419:00020419| |0419:00010419| :: |SAM| |083b:0002083b| |043b:0001043b| :: |SER| |1C1A:00000c1a| |241A:0000081a| :: |SIN| |045b:0000045b| |045b:0001045b| :: |SLO| |041b:0000041b| |041b:0001041b| :: |SOR| |042e:0001042e| |042e:0002042e| |042e:0000042e| :: |SPA| |0c0a:0000040a| |080a:0000080a| |0c0a:0001040a| :: |SWE| |041d:0000041d| |083b:0000083b| :: |SWI| |100c:0000100c| |0807:00000807| :: |SYR| |045a:0000045a| |045a:0001045a| :: |TAM| |0449:00000449| |0449:00020449| :: |TAT| |0444:00010444| |0444:00000444| :: |THA| |041e:0000041e| |041e:0002041e| |041e:0001041e| |041e:0003041e| :: |TIB| |0451:00010451| |0451:00000451| :: |TIF| |0409:00050c00| |0409:00050c00| :: |TUR| |041f:0001041f| |041f:0000041f| :: |UYG| |0480:00010480| |0480:00000480| |0480:00010408| :: |UKR| |0422:00000422| |0422:00020422| :: |UK| |0809:00000809| |0809:00000452| :: |US| |0409:00000409| |0409:00020409| |0409:00010409| |0409:00030409| |0409:00040409| :: |VIE| |042a:0000042a| |042A:{C2CB2CF0-AF47-413E-9780-8BC3A3C16068}{5FB02EC5-0A77-4684-B4FA-DEF8A2195628}| REM Marker :KBLANG-PRESET IF /I "%~1"=="kbLangSet" WAITFOR /SI Golden>NUL 2>&1 & SET "kbLangSel=%~2" & SET "kbMakeDef=%~3" & GOTO KBLANG-SETLANG SETLOCAL CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. CHOICE /C YN /N /M "%BS% Make default keyboard language? (Y/N): " IF %ERRORLEVEL%==2 SET "kbMakeDef=false" ECHO. & ECHO Adding keyboard language... TIMEOUT /T 1 /NOBREAK > NUL POWERSHELL -NoP -C "(Get-WmiObject Win32_Process -Filter ProcessId=$PID).ParentProcessId" > %temp%\CentralAMEProcessID.txt FOR /F "delims=" %%A IN (%temp%\CentralAMEProcessID.txt) DO SET "scriptPID=%%A" & DEL "%temp%\CentralAMEProcessID.txt" REM Detects if the script is being run under the currently logged in user. If not it runs a second instance as the current user FOR /F tokens^=2^ delims^=^" %%A IN ('TASKLIST /FI "PID eq %scriptPID%" /FI "USERNAME eq %currentUsername%" /NH /FO csv') DO SET processRunOut=%%A IF NOT "%processRunOut%"=="," ( REM If %lim% = rem that means the script is NOT being run as administrator. There's a small chance someone attempts to run it as another non-admin user, REM this would be problematic as schtasks requires admin privilages. IF "%lim%"=="rem " ECHO. & ECHO. & ECHO Script must be run as the current user & ECHO or with administrator privilages. & ECHO __________________________________________________________ & ECHO. & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU SETLOCAL ENABLEDELAYEDEXPANSION SCHTASKS /CREATE /tn SetDispLang /tr "CMD /C 'START /min '' '%scriptPath%' kbLangSet %kbLangSel% %kbMakeDef%'" /sc ONSTART /ru "%currentUsername%" /it /f > NUL REM RUNAS will work, however it requires the user to enter a password, and won't accept a blank one. This is a lot more simple and reliable SCHTASKS /RUN /tn SetDispLang > NUL WAITFOR Golden /T 10 > NUL 2>&1 IF !ERRORLEVEL! LSS 1 SCHTASKS /DELETE /tn SetDispLang /f>NUL & GOTO KBLANG-COMPLETE SCHTASKS /DELETE /tn SetDispLang /f > NUL ENDLOCAL & ENDLOCAL & ECHO. & ECHO. & ECHO Action failed. & ECHO __________________________________________________________ & ECHO. & PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: & GOTO HOME-MAINMENU ) :KBLANG-SETLANG POWERSHELL -NoP -C "$NewLangs=Get-WinUserLanguageList; $NewLangs[0].InputMethodTips.Add('%kbLangSel%'); Set-WinUserLanguageList $NewLangs -Force" > NUL IF NOT "%kbMakeDef%"=="false" POWERSHELL -NoP -C "Set-WinDefaultInputMethodOverride -InputTip "%kbLangSel%"" IF /I "%~1"=="kbLangSet" EXIT 0 :KBLANG-COMPLETE ECHO. & ECHO. & ECHO Keyboard language added successfully & ECHO __________________________________________________________ & ECHO. ENDLOCAL PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU REM -------------------------KBLANG-END------------------------- REM -------------------------NOUSERNAME------------------------- :NOUSERNAME-MENU CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. & ECHO [1] Disable Username Requirement & ECHO [2] Enable Username Requirement & ECHO. & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO. & ECHO __________________________________________________________ & ECHO. CHOICE /C 120X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "wshMenu=1" & GOTO NOUSERNAME-DISABLE IF %ERRORLEVEL%==2 SET "wshMenu=2" & GOTO NOUSERNAME-ENABLE IF %ERRORLEVEL%==3 GOTO HOME-MAINMENU IF %ERRORLEVEL%==4 EXIT /B 0 :NOUSERNAME-DISABLE CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. TIMEOUT /T 1 /NOBREAK > NUL REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v dontdisplaylastusername /f > NUL 2>&1 ECHO. & ECHO The username login requirement is now disabled & ECHO A restart is needed to take effect. & ECHO __________________________________________________________ & ECHO. CHOICE /C YN /N /M "%BS% Would you like to restart now? (Y/N): " IF %ERRORLEVEL%==1 SHUTDOWN -R -T 0 & EXIT 0 IF %ERRORLEVEL%==2 GOTO HOME-MAINMENU :NOUSERNAME-ENABLE CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. TIMEOUT /T 1 /NOBREAK > NUL REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v dontdisplaylastusername /t REG_DWORD /d 1 /f > NUL 2>&1 ECHO. & ECHO The username login requirement is now enabled & ECHO A restart is needed to take effect. & ECHO __________________________________________________________ & ECHO. CHOICE /C YN /N /M "%BS% Would you like to restart now? (Y/N): " IF %ERRORLEVEL%==1 SHUTDOWN -R -T 0 & EXIT 0 IF %ERRORLEVEL%==2 GOTO HOME-MAINMENU REM -----------------------NOUSERNAME-END----------------------- REM ----------------------------WSH----------------------------- :WSH-MENU CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. & ECHO [1] Enable WSH & ECHO [2] Disable WSH & ECHO. & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO. & ECHO __________________________________________________________ & ECHO. CHOICE /C 120X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "wshMenu=1" & GOTO WSH-ENABLE IF %ERRORLEVEL%==2 SET "wshMenu=2" & GOTO WSH-DISABLE IF %ERRORLEVEL%==3 GOTO HOME-MAINMENU IF %ERRORLEVEL%==4 EXIT /B 0 :WSH-ENABLE SET "cenStr=Enabling WSH for %currentUsername%..." & CALL :AUX-CENTERTEXT CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO%cenOut% TIMEOUT /T 2 /NOBREAK > NUL FOR /F "tokens=* USEBACKQ" %%F IN (`WMIC useraccount where "name="%currentUsername%"" get sid ^| FINDSTR "S-"`) DO SET WSHSID=%%F SET WSHSID=%WSHSID:~0,-3% REG ADD "HKEY_USERS\%WSHSID%\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 1 /f > NUL REG ADD "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 1 /f > NUL GOTO WSH-FINISH :WSH-DISABLE SET "cenStr=Disabling WSH for %currentUsername%..." & CALL :AUX-CENTERTEXT CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO%cenOut% TIMEOUT /T 2 /NOBREAK > NUL FOR /F "tokens=* USEBACKQ" %%F IN (`WMIC useraccount where "name="%currentUsername%"" get sid ^| FINDSTR "S-"`) DO SET WSHSID=%%F SET WSHSID=%WSHSID:~0,-3% REG ADD "HKEY_USERS\%WSHSID%\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 0 /f > NUL REG ADD "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /t REG_DWORD /d 0 /f > NUL GOTO WSH-FINISH :WSH-FINISH IF "%wshMenu%"=="1" SET "cenStr=WSH is now enabled for %currentUsername%" & SET "wshRestartMsg=& ECHO A restart is required to complete the setup. " IF "%wshMenu%"=="2" SET "cenStr=WSH is now disabled for %currentUsername%" & SET "wshRestartMsg=" CALL :AUX-CENTERTEXT ECHO. & ECHO. & ECHO%cenOut:~1% %wshRestartMsg%& ECHO __________________________________________________________ & ECHO. IF "%wshMenu%"=="1" CHOICE /C YN /N /M "%BS% Would you like to restart now? (Y/N): " IF %ERRORLEVEL%==1 SHUTDOWN -R -T 0 & EXIT 0 IF %ERRORLEVEL%==2 GOTO HOME-MAINMENU PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU REM --------------------------WSH-END-------------------------- REM ---------------------------NCSI---------------------------- :NCSI-MENU CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO. & ECHO [1] Enable NCSI Active Probing & ECHO [2] Disable NCSI Active Probing & ECHO. & ECHO [0] Return to Menu & ECHO [X] Exit & ECHO. & ECHO __________________________________________________________ & ECHO. CHOICE /C 120X /N /M "%BS% Choose a menu option: " IF %ERRORLEVEL%==1 SET "ncsiMenu=1" & GOTO NCSI-ENABLE IF %ERRORLEVEL%==2 SET "ncsiMenu=2" & GOTO NCSI-DISABLE IF %ERRORLEVEL%==3 GOTO HOME-MAINMENU IF %ERRORLEVEL%==4 EXIT /B 0 :NCSI-ENABLE CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO Enabling NCSI Active Probing... TIMEOUT /T 2 /NOBREAK > NUL REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet" /v EnableActiveProbing /t REG_DWORD /d 1 /f > NUL GOTO NCSI-FINISH :NCSI-DISABLE CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO Disabling NCSI Active Probing... TIMEOUT /T 2 /NOBREAK > NUL REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet" /v EnableActiveProbing /t REG_DWORD /d 0 /f > NUL GOTO NCSI-FINISH :NCSI-FINISH IF "%ncsiMenu%"=="1" SET "ncsiResult= NCSI Active Probing is now disabled" IF "%ncsiMenu%"=="2" SET "ncsiResult= NCSI Active Probing is now enabled" ECHO. & ECHO. & ECHO %ncsiResult% & ECHO A restart is required to take effect. & ECHO __________________________________________________________ & ECHO. CHOICE /C YN /N /M "%BS% Would you like to restart now? (Y/N): " IF %ERRORLEVEL%==1 SHUTDOWN -R -T 0 & EXIT 0 IF %ERRORLEVEL%==2 GOTO HOME-MAINMENU REM -------------------------NCSI-END-------------------------- REM ---------------- REM Script Functions REM ---------------- REM ----------------------------------------------------------- :AUX-UPDATE CLS & ECHO. & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO Downloading and applying update... TIMEOUT /T 1 /NOBREAK > NUL CURL -L "https://git.ameliorated.info/Joe/Central-AME-Script/releases/latest/CentralAMEScript.zip" --output "%temp%\AMECentralUpdated.zip" > NUL 2>&1 REM Detect size of update CMD file, this essentially allows for a simple error detection. FOR %%A IN ("%temp%\AMECentralUpdated.zip") DO SET "updCmdSize=%%~zA" IF %updCmdSize% LSS 7000 ( DEL /Q "%temp%\AMECentralUpdated.zip" > NUL GOTO AUX-UPDATEFAILED ) POWERSHELL -command "Expand-Archive -Path '%temp%\AMECentralUpdated.zip' -DestinationPath '%temp%'" > NUL > NUL 2>&1 XCOPY "%temp%\CentralAMEScript.cmd" "%scriptPath%" /Y /V /O & DEL /Q "%temp%\AMECentralUpdated.cmd" & CMD /C "%~0" updateFinished & EXIT 0 :AUX-UPDATEFAILED ECHO. & ECHO. & ECHO Download failed. & ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU :AUX-UPDATEFINISHED ECHO. & ECHO Script update successful & ECHO __________________________________________________________ & ECHO. & ECHO ^| Central AME Script %ver% ^| & ECHO. & ECHO Downloading and applying update... & ECHO. & ECHO. & ECHO Script Update Successful & ECHO __________________________________________________________ & ECHO. PAUSE > NUL|SET /P =%BS% Press any key to return to the Menu: GOTO HOME-MAINMENU REM ----------------------------------------------------------- REM ----------------------------------------------------------- :AUX-CENTERTEXT SET "cenSize=58" SET "offset= " SET "LEN=0" :CENTERTEXT-LOOP SETLOCAL ENABLEDELAYEDEXPANSION IF "!!cenStr:~%LEN%!!"=="" ENDLOCAL & GOTO CENTERTEXT-LOOPEND SET /A "LEN=%LEN%+1" FOR %%B IN ('%LEN%') DO ENDLOCAL & SET "LEN=%%B" SET "LEN=%LEN:~1,-1% GOTO CENTERTEXT-LOOP :CENTERTEXT-LOOPEND SET "compare=__________________________________________________________" SET "spaces= " SET /A "pref_len=%cenSize%-%LEN%-2" & SET /A "pref_len/=2" SET /A "suf_len=%cenSize%-%LEN%-2-%pref_len%" CALL SET "cenOutput=%%offset%%%%spaces:~0,%pref_len%%%%%CENSTR%%" FOR /F "delims=" %%B in ("%cenOutput%") DO ENDLOCAL & SET "cenOut=%%B" EXIT /B 0 REM ----------------------------------------------------------- REM ----------------------------------------------------------- :AUX-GETUSERNAME REM Grabs current username. %username% can be problematic and %userprofile% REM is hard to filter properly, thus why this method is used. FOR /F "tokens=2 delims=\" %%B IN ('WMIC computersystem get username') DO SET currentUsername=%%B SET "currentUsername=%currentUsername:~0,-3%" REM Detection for if user changed their username without restarting IF "%currentUsername%"=="~0,-3" SET "currentUsername=RestartRequired" SET "possibleUserDir=%currentUsername:~0,5%" EXIT /B 0 REM ----------------------------------------------------------- REM ----------------------------------------------------------- :AUX-ELEVATIONCHECK SET "elevCheckUsername="%currentUsername%"" IF /I "%currentUsername%"=="RestartRequired" SET "elevCheckUsername=" FOR /F "delims=" %%A IN ('NET user %elevCheckUsername% ^| FIND "Local Group Memberships"') DO SET "elevResult=%%A" > NUL 2>&1 ECHO "%elevResult%" | FINDSTR "Administrators" > NUL 2>&1 IF %ERRORLEVEL% LEQ 0 SET "userStatus=Elevated" IF %ERRORLEVEL% GTR 0 SET "userStatus=Not Elevated" IF /I "%currentUsername%"=="" SET "currentUsername=RestartRequired" EXIT /B 0 REM -----------------------------------------------------------