Что делает файл install.bat при установке Kefira

Код файла install.bat kefir758

@echo off
chcp 866 >nul 2>&1

COLOR 0F

set wd=%temp%\sdfiles
set clear=0
set cfw=ATMO
set cfwname=Atmosphere
set theme_flag=0
set theme=0
set syscon=1
set missioncontrol=1
set bootdat=1
set payloadbin=1
set pegascape=1
set oc=0
set emu=1

set sd=%1
if not defined %sd% (GOTO main)

:newcard
COLOR 0F
cls
echo Choose mounted SD card letter


@echo off

for /f "tokens=3-6 delims=: " %%a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size^,filesystem^,description ^| FINDSTR /I "Removable" ^| findstr /i "exfat fat32"') do (
    @echo wsh.echo "Disk letter: %%c;" ^& " free: " ^& FormatNumber^(cdbl^(%%b^)/1024/1024/1024, 2^)^& " GB;" ^& " size: " ^& FormatNumber^(cdbl^(%%d^)/1024/1024/1024, 2^)^& " GB;" ^& " FS: %%a" > %temp%\tmp.vbs
    @if not "%%c"=="" (
        @echo(
        @cscript //nologo %temp%\tmp.vbs
        del %temp%\tmp.vbs
    )
)

echo.
set /P sd="Enter SD card letter: "
if "%sd%"=="" goto :eof



if not exist "%sd%:\" (
	set word=        There is no SD card in %sd%-drive         
	goto WRONGSD
) else (
	if not exist "%sd%:\*" (goto WRONGSD)
)

:main

if not exist "%sd%:\pegascape" (if exist "%sd%:\atmosphere" (set pegascape=0))
if not exist "%sd%:\boot.dat" (if exist "%sd%:\atmosphere" (set bootdat=0))
if not exist "%sd%:\atmosphere\contents\690000000000000D\flags\boot2.flag" (set syscon=0)
if not exist "%sd%:\atmosphere\contents\010000000000bd00\flags\boot2.flag" (set missioncontrol=0)
if exist "%sd%:\switch\DBI\dbi.config" (rename %sd%:\switch\DBI\dbi.config dbi.config_)
if not exist "%sd%:\switch\tinfoil\locations.bkp" (
	if exist "%sd%:\switch\tinfoil\locations.conf" (rename %sd%:\switch\tinfoil\locations.conf locations.bkp)
)
if exist "%sd%:\bootloader\loader.kip" (set oc=1)

rem Set mission control status
@REM set missioncontrol=0
@REM set syscon=0


echo ------------------------------------------------------------------------
echo.
echo                          Remove old pack files                          
echo.
echo ------------------------------------------------------------------------
echo.


if exist "%sd%:\atmosphere\exefs_patches" (RD /s /q "%sd%:\atmosphere\exefs_patches")
if exist "%sd%:\atmosphere\kip_patches" (RD /s /q "%sd%:\atmosphere\kip_patches")
if exist "%sd%:\atmosphere\hekate_kips" (RD /s /q "%sd%:\atmosphere\hekate_kips")
if exist "%sd%:\bootloader\debug" (RD /s /q "%sd%:\bootloader\debug")
if exist "%sd%:\modules" (RD /s /q "%sd%:\modules")
if exist "%sd%:\atmo" (RD /s /q "%sd%:\atmo")

if exist "%sd%:\atmosphere\titles" (rename %sd%:\atmosphere\titles contents)
if exist "%sd%:\atmosphere\title" (rename %sd%:\atmosphere\title contents)
if exist "%sd%:\atmosphere\content" (rename %sd%:\atmosphere\content contents)

if exist "%sd%:\atmosphere\contents\0100000000000032" (RD /s /q "%sd%:\atmosphere\contents\0100000000000032")
if exist "%sd%:\atmosphere\contents\010000000000003C" (RD /s /q "%sd%:\atmosphere\contents\010000000000003C")
if exist "%sd%:\atmosphere\contents\0100000000000034" (RD /s /q "%sd%:\atmosphere\contents\0100000000000034")
if exist "%sd%:\atmosphere\contents\0100000000000037" (RD /s /q "%sd%:\atmosphere\contents\0100000000000037")
if exist "%sd%:\atmosphere\contents\0100000000000036" (RD /s /q "%sd%:\atmosphere\contents\0100000000000042")
if exist "%sd%:\atmosphere\contents\0100000000000042" (RD /s /q "%sd%:\atmosphere\contents\0100000000000042")
if exist "%sd%:\atmosphere\contents\010000000000002b" (RD /s /q "%sd%:\atmosphere\contents\010000000000002b")
if exist "%sd%:\atmosphere\contents\010000000000000D" (RD /s /q "%sd%:\atmosphere\contents\010000000000000D")
if exist "%sd%:\atmosphere\contents\010000000000100D" (RD /s /q "%sd%:\atmosphere\contents\010000000000100D")
if exist "%sd%:\atmosphere\contents\4200000000000010" (RD /s /q "%sd%:\atmosphere\contents\4200000000000010")
if exist "%sd%:\atmosphere\contents\0100000000000008" (RD /s /q "%sd%:\atmosphere\contents\0100000000000008")
if exist "%sd%:\atmosphere\contents\690000000000000D" (RD /s /q "%sd%:\atmosphere\contents\690000000000000D")
if exist "%sd%:\atmosphere\contents\420000000000000E" (RD /s /q "%sd%:\atmosphere\contents\420000000000000E")
if exist "%sd%:\atmosphere\contents\010000000000100B" (RD /s /q "%sd%:\atmosphere\contents\010000000000100B")
if exist "%sd%:\atmosphere\contents\01FF415446660000" (RD /s /q "%sd%:\atmosphere\contents\01FF415446660000")
if exist "%sd%:\atmosphere\contents\0100000000000352" (RD /s /q "%sd%:\atmosphere\contents\0100000000000352")
if exist "%sd%:\atmosphere\contents\00FF747765616BFF" (RD /s /q "%sd%:\atmosphere\contents\00FF747765616BFF")
if exist "%sd%:\atmosphere\contents\00FF0012656180FF" (RD /s /q "%sd%:\atmosphere\contents\00FF0012656180FF")
if exist "%sd%:\atmosphere\contents\0100000000001013" (RD /s /q "%sd%:\atmosphere\contents\0100000000001013")
if exist "%sd%:\atmosphere\contents\010000000007E51A" (RD /s /q "%sd%:\atmosphere\contents\010000000007E51A")
if exist "%sd%:\atmosphere\contents\420000000007E51A" (RD /s /q "%sd%:\atmosphere\contents\420000000007E51A")
if exist "%sd%:\atmosphere\contents\0100000000001000" (RD /s /q "%sd%:\atmosphere\contents\0100000000001000")
if exist "%sd%:\atmosphere\contents\010000000000100C" (RD /s /q "%sd%:\atmosphere\contents\010000000000100C")
if exist "%sd%:\atmosphere\contents\0000000000534C56" (RD /s /q "%sd%:\atmosphere\contents\0000000000534C56")
if exist "%sd%:\atmosphere\contents\0100000000000081" (RD /s /q "%sd%:\atmosphere\contents\0100000000000081")
if exist "%sd%:\atmosphere\contents\010000000000bd00" (RD /s /q "%sd%:\atmosphere\contents\010000000000bd00")
if exist "%sd%:\atmosphere\contents\420000000000000B" (RD /s /q "%sd%:\atmosphere\contents\420000000000000B")
if exist "%sd%:\config\uberhand\packages\ovrlck" (RD /s /q "%sd%:\config\uberhand\packages\ovrlck")
if exist "%sd%:\config\uberhand\romfs\lyt" (RD /s /q "%sd%:\config\uberhand\romfs\lyt")

if exist "%sd%:\atmosphere\erpt_reports" (RD /s /q "%sd%:\atmosphere\erpt_reports")
if exist "%sd%:\atmosphere\fatal_reports" (RD /s /q "%sd%:\atmosphere\fatal_reports")
if exist "%sd%:\atmosphere\fatal_errors" (RD /s /q "%sd%:\atmosphere\fatal_errors")
if exist "%sd%:\atmosphere\crash_reports" (RD /s /q "%sd%:\atmosphere\crash_reports")
if exist "%sd%:\atmosphere\stratosphere.romfs" (del "%sd%:\atmosphere\stratosphere.romfs")

if exist "%sd%:\atmosphere\fusee-secondary_atmo.bin" (del "%sd%:\atmosphere\fusee-secondary_atmo.bin")
if exist "%sd%:\atmosphere\hbl_atmo.nsp" (del "%sd%:\atmosphere\hbl_atmo.nsp")
if exist "%sd%:\atmosphere\fusee-secondary.bin.sig" (del "%sd%:\atmosphere\fusee-secondary.bin.sig")
if exist "%sd%:\atmosphere\hbl.nsp.sig" (del "%sd%:\atmosphere\hbl.nsp.sig")
if exist "%sd%:\atmosphere\hbl.json" (del "%sd%:\atmosphere\hbl.json")
if exist "%sd%:\atmosphere\BCT.ini" (del "%sd%:\atmosphere\BCT.ini")
if exist "%sd%:\atmosphere\config\BCT.ini" (del "%sd%:\atmosphere\config\BCT.ini")
if exist "%sd%:\atmosphere\package3" (del "%sd%:\atmosphere\package3")
if exist "%sd%:\atmosphere\system_settings.ini" (del "%sd%:\atmosphere\system_settings.ini")
if exist "%sd%:\atmosphere\loader.ini" (del "%sd%:\atmosphere\system_settings.ini")
if exist "%sd%:\atmosphere\kips\loader.kip" (RD /s /q  "%sd%:\atmosphere\kips\loader.kip")
if exist "%sd%:\atmosphere\kips\fs_mitm.kip" (RD /s /q  "%sd%:\atmosphere\kips\fs_mitm.kip")
if exist "%sd%:\atmosphere\kips\ldn_mitm.kip" (RD /s /q  "%sd%:\atmosphere\kips\ldn_mitm.kip")
if exist "%sd%:\atmosphere\kips\pm.kip" (RD /s /q  "%sd%:\atmosphere\kips\pm.kip")
if exist "%sd%:\atmosphere\kips\sm.kip" (RD /s /q  "%sd%:\atmosphere\kips\sm.kip")
if exist "%sd%:\atmosphere\kips\ams_mitm.kip" (RD /s /q  "%sd%:\atmosphere\kips\ams_mitm.kip")
if exist "%sd%:\atmosphere\erpt_reports" (RD /s /q  "%sd%:\atmosphere\erpt_reports")
if exist "%sd%:\atmosphere\flags\hbl_cal_read.flag" (del "%sd%:\atmosphere\flags\hbl_cal_read.flag")
if exist "%sd%:\atmosphere\exosphere.bin" (del "%sd%:\atmosphere\exosphere.bin")
if exist "%sd%:\atmosphere\hbl.nsp" (del "%sd%:\atmosphere\hbl.nsp")
if exist "%sd%:\atmosphere\loader.ini" (del "%sd%:\atmosphere\loader.ini")
if exist "%sd%:\atmosphere\reboot_payload.bin" (del "%sd%:\atmosphere\reboot_payload.bin")
if exist "%sd%:\atmosphere\BCT.ini" (del "%sd%:\atmosphere\BCT.ini")
if exist "%sd%:\sxos\bootloader" (RD /s /q  "%sd%:\sxos\bootloader")
if exist "%sd%:\sxos\switch" (RD /s /q  "%sd%:\sxos\switch")
if exist "%sd%:\sxos\exefs_patches" (RD /s /q  "%sd%:\sxos\exefs_patches")
if exist "%sd%:\sept" (RD /s /q  "%sd%:\sept")
if exist "%sd%:\sxos\boot.dat" (del "%sd%:\sxos\boot.dat")
if exist "%sd%:\games\tinfoil*.*" (del "%sd%:\games\tinfoil*.*")
if exist "%sd%:\sxos\sxos" (
	xcopy %sd%:\sxos\sxos\* %sd%:\sxos\ /Y /S /E /H /R /D
)
if exist "%sd%:\atmosphere\fusee-secondary.bin" (del "%sd%:\atmosphere\fusee-secondary.bin")
if exist "%sd%:\bootloader\payloads\fusee-primary-payload.bin" (del "%sd%:\bootloader\payloads\fusee-primary-payload.bin")
if exist "%sd%:\bootloader\payloads\Incognito_RCM.bin" (del "%sd%:\bootloader\payloads\Incognito_RCM.bin")
if exist "%sd%:\bootloader\payloads\Lockpick_RCM.bin" (del "%sd%:\bootloader\payloads\Lockpick_RCM.bin")
if exist "%sd%:\bootloader\payloads\kefir-helper.bin" (del "%sd%:\bootloader\payloads\kefir-helper.bin")
if exist "%sd%:\bootloader\payloads\biskeydump.bin" (del "%sd%:\bootloader\payloads\biskeydump.bin")
if exist "%sd%:\bootloader\payloads\fusee-payload.bin" (del "%sd%:\bootloader\payloads\fusee-payload.bin")
if exist "%sd%:\bootloader\payloads\fusee-primary.bin" (del "%sd%:\bootloader\payloads\fusee-primary.bin")
if exist "%sd%:\bootloader\payloads\fusee.bin" (del "%sd%:\bootloader\payloads\fusee.bin")
if exist "%sd%:\bootloader\payloads\sxos.bin" (del "%sd%:\bootloader\payloads\sxos.bin")
if exist "%sd%:\bootloader\payloads\rajnx_ipl.bin" (del "%sd%:\bootloader\payloads\rajnx_ipl.bin")
if exist "%sd%:\fusee-secondary.bin" (del "%sd%:\fusee-secondary.bin")
if exist "%sd%:\atmosphere\fusee-secondary.bin" (del "%sd%:\atmosphere\fusee-secondary.bin")
if exist "%sd%:\bootloader\ini\Atmosphere.ini" (del "%sd%:\bootloader\ini\Atmosphere.ini")
if exist "%sd%:\bootloader\ini\atmosphere.ini" (del "%sd%:\bootloader\ini\atmosphere.ini")
if exist "%sd%:\bootloader\ini\sxos.ini" (del "%sd%:\bootloader\ini\sxos.ini")
if exist "%sd%:\bootloader\ini\hekate_keys.ini" (del "%sd%:\bootloader\ini\hekate_keys.ini")
if exist "%sd%:\bootloader\hekate_keys.ini" (del "%sd%:\bootloader\hekate_keys.ini")
if exist "%sd%:\bootloader\kefir.ini" (del "%sd%:\bootloader\kefir.ini")
if exist "%sd%:\bootloader\ini\RajNX.ini" (del "%sd%:\bootloader\ini\RajNX.ini")
if exist "%sd%:\bootloader\updating.bmp" (del "%sd%:\bootloader\updating.bmp")

if exist "%sd%:\license-request.dat" (del "%sd%:\license-request.dat")
if exist "%sd%:\boot.dat" (del "%sd%:\boot.dat")
if exist "%sd%:\hekate*.bin" (del "%sd%:\hekate*.bin")
if exist "%sd%:\hbmenu.nro" (del "%sd%:\hbmenu.nro")
if exist "%sd%:\keys.dat" (del "%sd%:\keys.dat")
if exist "%sd%:\BCT.ini" (del "%sd%:\BCT.ini")
if exist "%sd%:\startup.te" (del "%sd%:\startup.te")
if exist "%sd%:\hekate_ipl.ini" (del "%sd%:\hekate_ipl.ini")

if exist "%sd%:\bootloader\hekate_ipl.ini" (del "%sd%:\bootloader\hekate_ipl.ini")
if exist "%sd%:\bootloader\ini\fullstock.ini" (del "%sd%:\bootloader\ini\fullstock.ini")
if exist "%sd%:\bootloader\update.bin" (del "%sd%:\bootloader\update.bin")
if exist "%sd%:\bootloader\update.bin.sig" (del "%sd%:\bootloader\update.bin.sig")
if exist "%sd%:\bootloader\patches_template.ini" (del "%sd%:\bootloader\patches_template.ini")
if exist "%sd%:\bootloader\patches.ini" (del "%sd%:\bootloader\patches.ini")
if exist "%sd%:\bootloader\bootlogo.bmp" (del "%sd%:\bootloader\bootlogo.bmp")
if exist "%sd%:\bootloader\res\icon_payload.bmp" (del "%sd%:\bootloader\res\icon_payload.bmp")
if exist "%sd%:\bootloader\res\icon_switch.bmp" (del "%sd%:\bootloader\res\icon_switch.bmp")
if exist "%sd%:\bootloader\payloads\rajnx_ipl.bin" (del "%sd%:\bootloader\payloads\rajnx_ipl.bin")
if exist "%sd%:\switch\games\hbmenu*.nsp" (del "%sd%:\switch\games\hbmenu*.nsp")
if exist "%sd%:\switch\lithium" (RD /s /q "%sd%:\switch\lithium")
if exist "%sd%:\switch\LinkUser" (RD /s /q "%sd%:\switch\LinkUser")
if exist "%sd%:\switch\KosmosToolbox" (RD /s /q "%sd%:\switch\KosmosToolbox")
if exist "%sd%:\switch\KosmosUpdater" (RD /s /q "%sd%:\switch\KosmosUpdater")
if exist "%sd%:\switch\mercury" (RD /s /q "%sd%:\switch\mercury")
if exist "%sd%:\switch\nxmtp" (RD /s /q "%sd%:\switch\nxmtp")
if exist "%sd%:\switch\tinfoil\tinfoil.nro" (del "%sd%:\switch\tinfoil\tinfoil.nro")
if exist "%sd%:\switch\tinfoil\keys.txt" (del "%sd%:\switch\tinfoil\keys.txt")
if exist "%sd%:\switch\nxmtp.nro" (del "%sd%:\switch\nxmtp.nro")
if exist "%sd%:\switch\pplay.nro" (del "%sd%:\switch\pplay.nro")
if exist "%sd%:\switch\NX-SHELL.nro" (del "%sd%:\switch\NX-SHELL.nro")
if exist "%sd%:\switch\NX-Shell\NX-Shell.nro" (del "%sd%:\switch\NX-Shell\NX-Shell.nro")
if exist "%sd%:\switch\reboot_to_payload.nro" (del "%sd%:\switch\reboot_to_payload.nro")
if exist "%sd%:\switch\NxThemesInstaller.nro" (del "%sd%:\switch\NxThemesInstaller.nro")
if exist "%sd%:\switch\NxThemesInstaller\NxThemesInstaller.nro" (del "%sd%:\switch\NxThemesInstaller\NxThemesInstaller.nro")
if exist "%sd%:\switch\SXSM.nro" (del "%sd%:\switch\SXSM.nro")
if exist "%sd%:\switch\sx.nro" (del "%sd%:\switch\sx.nro")
if exist "%sd%:\switch\n1dus.nro" (del "%sd%:\switch\n1dus.nro")
if exist "%sd%:\switch\ChoiDujourNX.nro" (del "%sd%:\switch\ChoiDujourNX.nro")
if exist "%sd%:\switch\ChoiDujourNX\ChoiDujourNX.nro" (del "%sd%:\switch\ChoiDujourNX\ChoiDujourNX.nro")
if exist "%sd%:\switch\kefirupdater\kefirupdater.nro" (del "%sd%:\switch\kefirupdater\kefirupdater.nro")
if exist "%sd%:\switch\kefirupdater\kefir-updater.nro" (del "%sd%:\switch\kefirupdater\kefir-updater.nro")
if exist "%sd%:\switch\kefirupdater.nro" (del "%sd%:\switch\kefirupdater\kefirupdater.nro")
if exist "%sd%:\switch\kefir-updater.nro" (del "%sd%:\switch\kefirupdater\kefir-updater.nro")
if exist "%sd%:\switch\daybreak.nro" (del "%sd%:\switch\daybreak.nro")
if exist "%sd%:\switch\daybreak\daybreak.nro" (del "%sd%:\switch\daybreak\daybreak.nro")
if exist "%sd%:\switch\kefirupdater\cheats.zip" (del "%sd%:\switch\kefirupdater\cheats.zip")
if exist "%sd%:\switch\kefirupdater\kefir.zip" (del "%sd%:\switch\kefirupdater\kefir.zip")
if exist "%sd%:\switch\kefirupdater\firmware.zip" (del "%sd%:\switch\kefirupdater\firmware.zip")

if exist "%sd%:\switch\LinkUser" (RD /s /q "%sd%:\switch\LinkUser\")
if exist "%sd%:\switch\nxmp" (RD /s /q "%sd%:\switch\nxmp\")
if exist "%sd%:\switch\dbi.nro" (del "%sd%:\switch\dbi.nro")
if exist "%sd%:\switch\btpair.nro" (del "%sd%:\switch\btpair.nro")
if exist "%sd%:\switch\btpair\btpair.nro" (del "%sd%:\switch\btpair\btpair.nro")
if exist "%sd%:\switch\.DBI.nro.star" (del "%sd%:\switch\.DBI.nro.star")
if exist "%sd%:\switch\dbi\dbi.nro" (del "%sd%:\switch\dbi\dbi.nro")
if exist "%sd%:\switch\Lockpick\Lockpick.nro" (del "%sd%:\switch\Lockpick\Lockpick.nro")
if exist "%sd%:\switch\Lockpick.nro" (del "%sd%:\switch\Lockpick.nro")
if exist "%sd%:\switch\nxmtp.nro" (del "%sd%:\switch\nxmtp.nro")
if exist "%sd%:\switch\nxmtp" (RD /s /q "%sd%:\switch\nxmtp\")
if exist "%sd%:\switch\NX-Activity-Log.nro" (del "%sd%:\switch\NX-Activity-Log.nro")
if exist "%sd%:\switch\switch-cheats-updater" (RD /s /q "%sd%:\switch\switch-cheats-updater\")
if exist "%sd%:\switch\FreshHay" (RD /s /q "%sd%:\switch\FreshHay\")
if exist "%sd%:\switch\nx-ntpc" (RD /s /q "%sd%:\switch\nx-ntpc\")
if exist "%sd%:\switch\sx" (RD /s /q "%sd%:\switch\sx")
if exist "%sd%:\switch\incognito.nro" (del "%sd%:\switch\incognito.nro")
if exist "%sd%:\switch\incognito" (RD /s /q "%sd%:\switch\incognito")
if exist "%sd%:\switch\ultimate_updater.nro" (del "%sd%:\switch\ultimate_updater.nro")
if exist "%sd%:\switch\zerotwoxci.nro" (del "%sd%:\switch\zerotwoxci.nro")
if exist "%sd%:\switch\dOPUS.nro" (del "%sd%:\switch\dOPUS.nro")
if exist "%sd%:\switch\tinfoil.nro" (del "%sd%:\switch\tinfoil.nro")
if exist "%sd%:\switch\tinfoil_batch.nro" (del "%sd%:\switch\tinfoil_batch.nro")
if exist "%sd%:\switch\tinfoil_duckbill.nro" (del "%sd%:\switch\tinfoil_duckbill.nro")
if exist "%sd%:\switch\tinfoil_usb-fix.nro" (del "%sd%:\switch\tinfoil_usb-fix.nro")
if exist "%sd%:\switch\ldnmitm_config.nro" (del "%sd%:\switch\ldnmitm_config.nro")
if exist "%sd%:\switch\ldnmitm_config" (RD /s /q "%sd%:\switch\ldnmitm_config")
if exist "%sd%:\pegascape" (RD /s /q "%sd%:\pegascape")
if exist "%sd%:\switch\fakenews-injector.nro" (del "%sd%:\switch\fakenews-injector.nro")
if exist "%sd%:\switch\gag-order.nro" (del "%sd%:\switch\gag-order.nro")
if exist "%sd%:\games\hbgShop*.nsp" (del "%sd%:\games\hbgShop_forwarder_classic.nsp")
if exist "%sd%:\games\Tinfoil*.nsp" (del "%sd%:\games\hbgShop_forwarder_dark_v3.nsp")
if exist "%sd%:\switch\fakenews-injector" (RD /s /q "%sd%:\switch\fakenews-injector")
if exist "%sd%:\sxos\sx" (RD /s /q "%sd%:\sxos\sx")
if exist "%sd%:\switch\.packages\Semi-stock" (RD /s /q "%sd%:\switch\.packages\Semi-stock")
if exist "%sd%:\config\uberhand\packages\oc_bkp\oc.ini" (RD /s /q "%sd%:\config\uberhand\packages\oc_bkp\oc.ini")
if exist "%sd%:\config\uberhand\packages\oc" (RD /s /q "%sd%:\config\uberhand\packages\oc")

if exist "%sd%:\firmware" (RD /s /q "%sd%:\firmware")
if exist "%sd%:\config\kefir-updater\firmware.zip" (del "%sd%:\config\kefir-updater\firmware.zip")
if exist "%sd%:\config\kefir-updater\atmo.zip" (del "%sd%:\config\kefir-updater\atmo.zip")
if exist "%sd%:\config\kefir-updater\*.zip" (del "%sd%:\config\kefir-updater\*.zip")
if exist "%sd%:\config\uberhand\packages\settings\8gb.txt" (del "%sd%:\config\uberhand\packages\settings\8gb.txt") 

if exist "%sd%:\bootloader\nyx.ini" (
	copy "%sd%:\bootloader\nyx.ini" "%sd%:\bootloader\nyx.bkp"
	)

@REM if exist "%sd%:\config\uberhand\packages\settings\stock" (set emu=0) 

if exist "%sd%:\config\uberhand\packages\settings\stock" (del "%sd%:\config\uberhand\packages\settings\stock")
if exist "%sd%:\atmosphere\config\system_settings_emu.ini" (del "%sd%:\atmosphere\config\system_settings_emu.ini")
if exist "%sd%:\emummc\emummc.ini_bkp" (
	copy "%sd%:\emummc\emummc.ini_bkp" "%sd%:\emummc\emummc.ini"
	del "%sd%:\emummc\emummc.ini_bkp"
)


echo ------------------------------------------------------------------------
echo.
echo                             Installing                   
echo.
echo ------------------------------------------------------------------------

xcopy "%~dp0*" "%sd%:\" /H /Y /C /R /S /E

if %oc%==1 (
    xcopy "%sd%:\config\uberhand\packages\oc\*" "%sd%:\" /H /Y /C /R /S /E /I /F
) else (
    if exist "%sd%:\atmosphere\contents\00FF0000636C6BFF\" (RD /s /q "%sd%:\atmosphere\contents\00FF0000636C6BFF\")
    if exist "%sd%:\atmosphere\kips\kefir.kip" (del "%sd%:\atmosphere\kips\kefir.kip")
    if exist "%sd%:\atmosphere\kips\loader.kip" (del "%sd%:\atmosphere\kips\loader.kip")
    if exist "%sd%:\switch\.overlays\sys-clk-overlay.ovl" (del "%sd%:\switch\.overlays\sys-clk-overlay.ovl")
)

RD /s /q "%sd%:\oc"

if exist "%sd%:\hekate_ctcaer_*.bin" (del "%sd%:\hekate_ctcaer_*.bin")

if exist "Y:\Switch\\addons\themes" (xcopy "Y:\Switch\\addons\themes\*" "%sd%:\themes" /H /Y /C /R /S /E /I)
if exist "Y:\Switch\\addons\atmosphere" (xcopy "Y:\Switch\\addons\atmosphere\*" "%sd%:\atmosphere" /H /Y /C /R /S /E /I)

if exist "%sd%:\.git" (RD /s /q "%sd%:\.git")

if exist "%sd%:\bootloader\nyx.bkp" (
	copy "%sd%:\bootloader\nyx.bkp" "%sd%:\bootloader\nyx.ini"
	del "%sd%:\bootloader\nyx.bkp"
	)

if %pegascape%==0 (
	if exist "%sd%:\pegascape" (RD /s /q "%sd%:\pegascape")
	)

if %bootdat%==0 (
	if exist "%sd%:\boot.dat" (del "%sd%:\boot.dat")
	if exist "%sd%:\boot.ini" (del "%sd%:\boot.ini")
	)

if exist "%sd%:\switch\DBI\dbi.config_" (
    del "%sd%:\switch\DBI\dbi.config"
    rename %sd%:\switch\DBI\dbi.config_ dbi.config
    )

@REM if exist "%sd%:\switch\tinfoil\locations.bkp" (
@REM     del "%sd%:\switch\tinfoil\locations.conf"
@REM     rename %sd%:\switch\tinfoil\locations.bkp locations.conf
@REM     )

echo ------------------------------------------------------------------------
echo.
echo                              Fix atributes                              
echo.
echo ------------------------------------------------------------------------
echo.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbstor\11ECA7E0 /v MaximumTransferLength /t REG_DWORD /d 00100000 /f>nul 2>&1
if exist "%sd%:\TinGen" (RD /s /q "%sd%:\TinGen")

if exist "%sd%:\kefir" (RD /s /q "%sd%:\kefir")
if exist "%sd%:\switch\kefir-updater\startup.te" (del "%sd%:\switch\kefir-updater\startup.te")
if exist "%sd%:\switch\kefir-updater\update.te" (del "%sd%:\switch\kefir-updater\update.te")

if exist "%sd%:\startup.te" (del "%sd%:\startup.te")

if exist "%sd%:\bootloader\hekate_ipl.ini" (del "%sd%:\bootloader\hekate_ipl.ini")
if exist "%sd%:\bootloader\hekate_ipl_.ini" (copy %sd%:\bootloader\hekate_ipl_.ini %sd%:\bootloader\hekate_ipl.ini /Y)>nul 2>&1

if exist "%sd%:\bootloader\hekate_ipl_.ini" (del "%sd%:\bootloader\hekate_ipl_.ini")
if exist "%sd%:\bootloader\ini\*kefir_updater.ini" (del "%sd%:\bootloader\ini\*kefir_updater.ini")
if exist "%sd%:\bootloader\res\ku.bmp" (del "%sd%:\bootloader\res\ku.bmp")
if exist "%sd%:\switch\kefirupdater\kefir-updater.bin" (del "%sd%:\switch\kefirupdater\kefir-updater.bin")
if exist "%sd%:\switch\kefirupdater\startup.te" (del "%sd%:\switch\kefirupdater\startup.te")
if exist "%sd%:\install.bat" (del "%sd%:\install.bat")
if exist "%sd%:\bootloader\nyx.ini_" (del "%sd%:\bootloader\nyx.ini_")
if exist "%sd%:\switch\kefirupdater" (RD /s /q "%sd%:\switch\kefirupdater")

if %syscon%==0 (
	del "%sd%:\atmosphere\contents\690000000000000D\flags\boot2.flag"
	)

if %missioncontrol%==0 (
	del "%sd%:\atmosphere\contents\010000000000bd00\flags\boot2.flag"
	)

if exist "%sd%:\atmosphere\contents\0100000000000352\flags\boot2.flag" (del "%sd%:\atmosphere\contents\0100000000000352\flags\boot2.flag")

if exist "%sd%:\atmosphere" (
	attrib -A -H /S /D %sd%:\atmosphere\*
	attrib -A -H %sd%:\atmosphere)
if exist "%sd%:\atmosphere\contents" (
	attrib -A -H /S /D %sd%:\atmosphere\contents\*
	attrib -A -H %sd%:\atmosphere\contents)
if exist "%sd%:\bootloader" (
	attrib -A -H /S /D %sd%:\bootloader\*
	attrib -A -H %sd%:\bootloader)
if exist "%sd%:\config" (
	attrib -A -H /S /D %sd%:\config\*
	attrib -A -H %sd%:\config)
if exist "%sd%:\switch" (
	attrib -A -H /S /D %sd%:\switch\*
	attrib -A -H %sd%:\switch)
if exist "%sd%:\games" (
	attrib -A -H /S /D %sd%:\games\*
	attrib -A -H %sd%:\games)
if exist "%sd%:\themes" (
	attrib -A -H /S /D %sd%:\themes\*
	attrib -A -H %sd%:\themes)
if exist "%sd%:\hbmenu.nro" (attrib -A -H %sd%:\hbmenu.nro)
if exist "%sd%:\boot.dat" (attrib -A -H %sd%:\boot.dat)
if exist "%sd%:\payload.bin" (attrib -A -H %sd%:\payload.bin)
if exist "%sd%:\pegascape" (
	attrib -A -H /S /D %sd%:\pegascape\*
	attrib -A -H %sd%:\pegascape)

goto end

:WRONGSD
cls
COLOR C


ECHO ----------------------------------------------------------
ECHO ======            Choosed SD letter is: %sd%:/          =====
ECHO ======       There is no SD card in drive %sd%:/        =====
ECHO ----------------------------------------------------------
ECHO.
ECHO. 
ECHO            1.  The card letter is correct
ECHO            2.  Choose another card letter
ECHO.
ECHO ==========================================================
ECHO                                              Q.  Exit
ECHO.

set st=
set /p st=:

for %%A in ("Y" "y" "1" "н" "Н") do if "%st%"==%%A (GOTO main)
for %%A in ("N" "n" "2" "т" "Т") do if "%st%"==%%A (GOTO newcard)
for %%A in ("Q" "q" "Й" "й") do if "%st%"==%%A (GOTO END)

:END
echo. 
cls
COLOR 2
echo ------------------------------------------------------------------------
echo                            All Done
echo ------------------------------------------------------------------------
echo. 
echo. 
echo Press any button for exit


if exist "%wd%" (RD /s /q "%wd%\*")
pause>nul 2>&1
exit

Этот скрипт на языке Batch предназначен для управления файлами на SD-карте, для установки kefir. Статья написано нейросетью.


Первый блок | Подготовка

Описание работы этапа

1. Настройка окружения:

@echo off
chcp 866 >nul 2>&1
COLOR 0F
  • @echo off: Отключает отображение команд в консоли.
  • chcp 866 >nul 2>&1: Устанавливает кодировку консоли на CP866 (кириллица).
  • COLOR 0F: Устанавливает цвет консоли: черный фон (0), белый текст (F).

2. Переменные конфигурации:

set wd=%temp%\sdfiles
set clear=0
set cfw=ATMO
set cfwname=Atmosphere
set theme_flag=0
set theme=0
set syscon=1
set missioncontrol=1
set bootdat=1
set payloadbin=1
set pegascape=1
set oc=0
set emu=1
  • wd: Путь для временных файлов (%temp% — системная папка для временных файлов).
  • Остальные переменные хранят настройки для проверки:
    • cfw и cfwname: Указывают на используемую прошивку (Atmosphere).
    • syscon, missioncontrol, bootdat: Переключатели для функций прошивки (например, поддержка MissionControl).
    • pegascape: Флаг для проверки наличия Pegascape.
    • oc: Указывает на разгон (overclocking).
    • emu: Указывает на использование эмулятора.

3. Проверка аргумента командной строки:

set sd=%1
if not defined %sd% (GOTO main)
  • set sd=%1: Берет первый аргумент командной строки как букву диска SD-карты.
  • if not defined %sd%: Если аргумент не указан, переходит к метке main.

4. Выбор SD-карты:

:newcard
COLOR 0F
cls
echo Choose mounted SD card letter
  • newcard: Метка для повторного выбора SD-карты.
  • Очищает консоль и предлагает выбрать букву диска.

5. Перебор подключенных SD-карт:

for /f "tokens=3-6 delims=: " %%a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size^,filesystem^,description ^| FINDSTR /I "Removable" ^| findstr /i "exfat fat32"') do (
    ...
)
  • WMIC LOGICALDISK: Команда для получения списка подключенных дисков.
    • Фильтруются только съемные носители с файловыми системами exfat или fat32.
  • for: Итерация по данным:
    • %%a — Файловая система (exFAT, FAT32).
    • %%b — Свободное место.
    • %%c — Буква диска.
    • %%d — Общий объем диска.
  • cscript: Создает и запускает временный скрипт tmp.vbs, чтобы вывести информацию в удобочитаемом формате.
  • Если SD-карта найдена, выводится информация.

6. Проверка SD-карты:

set /P sd="Enter SD card letter: "
if "%sd%"=="" goto :eof

if not exist "%sd%:\" (
	set word=        There is no SD card in %sd%-drive         
	goto WRONGSD
) else (
	if not exist "%sd%:\*" (goto WRONGSD)
)
  • set /P: Ждет ввода буквы SD-карты.
  • if not exist: Проверяет, существует ли указанный диск и есть ли на нем файлы.

7. Проверка файлов и настроек на SD-карте:

:main

if not exist "%sd%:\pegascape" (if exist "%sd%:\atmosphere" (set pegascape=0))
if not exist "%sd%:\boot.dat" (if exist "%sd%:\atmosphere" (set bootdat=0))
if not exist "%sd%:\atmosphere\contents\690000000000000D\flags\boot2.flag" (set syscon=0)
if not exist "%sd%:\atmosphere\contents\010000000000bd00\flags\boot2.flag" (set missioncontrol=0)
if exist "%sd%:\switch\DBI\dbi.config" (rename %sd%:\switch\DBI\dbi.config dbi.config_)
if not exist "%sd%:\switch\tinfoil\locations.bkp" (
	if exist "%sd%:\switch\tinfoil\locations.conf" (rename %sd%:\switch\tinfoil\locations.conf locations.bkp)
)
if exist "%sd%:\bootloader\loader.kip" (set oc=1)
  • if not exist: Проверяет наличие определенных файлов/папок:
    • pegascape: Если папка pegascape отсутствует, а atmosphere существует, флаг pegascape сбрасывается.
    • boot.dat: Проверяет, используется ли Hekate загрузчик.
    • syscon, missioncontrol: Проверяет флаги для дополнительных функций.
  • rename: Переименовывает файлы конфигурации:
    • DBI: Резервирует файл dbi.config.
    • Tinfoil: Резервирует файл locations.conf как locations.bkp.
  • oc: Если файл loader.kip найден, это означает включение разгона (overclocking).

8. Закомментированные строки:

@REM set missioncontrol=0
@REM set syscon=0
  • Эти строки закомментированы и, видимо, использовались для отладки.

Скрипт в целом выполняет следующие задачи:

  1. Находит съемный диск (SD-карту) с правильной файловой системой.
  2. Проверяет наличие ключевых файлов/папок, чтобы определить состояние и настройки SD-карты.
  3. Делает резервное копирование или переименование некоторых конфигурационных файлов.
  4. Обновляет переменные, которые используются для последующей работы с SD-картой.

Второй блок | Удаляет старые файлы

Описание работы этапа

Этот скрипт выполняет очистку различных директорий и файлов на SD-карте, а также удаляет и переименовывает некоторые файлы и папки, связанные с Atmosphere, SXOS и другими программами.

Вот основные шаги, которые выполняет скрипт:

  1. Удаление старых пакетов и папок:
    • Папки, связанные с Atmosphere, такими как exefs_patches, kip_patches, hekate_kips и другие, удаляются с помощью команды RD /s /q, которая рекурсивно удаляет папки и все их содержимое без подтверждения.
  2. Переименование папок:
    • Некоторые папки, такие как titles, title, и content в atmosphere, переименовываются в contents.
  3. Удаление файлов, связанных с отчётами и конфигурациями:
    • Удаляются файлы отчётов, таких как erpt_reports, fatal_reports, fatal_errors, а также различные .bin файлы и другие файлы конфигурации.
  4. Удаление специфических файлов:
    • Удаляются различные бинарные файлы и конфигурационные файлы, такие как fusee-secondary.bin, hekate_keys.ini, bootloader.ini, и другие, которые могут быть связаны с загрузчиками и payloads.
  5. Копирование данных:
    • Если существует папка sxos\sxos, она копируется в папку sxos, при этом сохраняются все вложенные файлы и подкаталоги.
  6. Удаление всех файлов, связанных с определёнными приложениями:
    • Скрипт также удаляет различные файлы, такие как hbmenu.nro, NxThemesInstaller.nro, и другие, которые могут быть использованы для запуска Homebrew и других модификаций на Switch.
  7. Удаление каталогов и файлов, относящихся к конкретным приложениям или модулям:
    • Скрипт удаляет папки, такие как lithium, KosmosToolbox, и другие, а также файлы с расширением .nro или .txt, которые могут быть связаны с модификациями или инструментами для Switch.

Этот скрипт используется для очистки старых или ненужных файлов с SD-карты, которые могут возникать при обновлении или изменении прошивки на Switch, или при удалении старых установленных модификаций.

Основная цель скрипта — подготовить устройство для нового ПО или обновления, удалив старые файлы, которые могут конфликтовать с новыми версиями.

Третий блок | Устанавливает новые файлы

Описание работы этапа


1. Вывод баннера установки

echo ------------------------------------------------------------------------
echo.
echo                             Installing                   
echo.
echo ------------------------------------------------------------------------

Этот блок выводит на экран разделительную строку и текст Installing, указывая, что начинается процесс установки.


2. Копирование всех файлов из текущей директории на SD-карту

xcopy "%~dp0*" "%sd%:\" /H /Y /C /R /S /E
  • %~dp0 — путь к текущей папке, где находится скрипт.
  • %sd%:\ — путь к корневой директории SD-карты.
  • Параметры xcopy:
    • /H — копирует скрытые файлы.
    • /Y — подавляет запрос на подтверждение перезаписи файлов.
    • /C — продолжает копирование даже при возникновении ошибок.
    • /R — позволяет перезаписывать файлы только для чтения.
    • /S — копирует папки и их содержимое, включая вложенные.
    • /E — копирует пустые папки.

Этот шаг копирует все файлы из текущей папки на SD-карту.


3. Копирование “разгонного” профиля (если найдено определенное содержимое)

if %oc%==1 (
    xcopy "%sd%:\config\uberhand\packages\oc\*" "%sd%:\" /H /Y /C /R /S /E /I /F
)
  • Проверяется переменная %oc%. Если она равна 1 (включена поддержка разгона), файлы из папки \config\uberhand\packages\oc\ на SD-карте копируются в корневую директорию карты.

4. Удаление файлов, если разгон не используется

else (
    if exist "%sd%:\atmosphere\contents\00FF0000636C6BFF\" (RD /s /q "%sd%:\atmosphere\contents\00FF0000636C6BFF\")
    if exist "%sd%:\atmosphere\kips\kefir.kip" (del "%sd%:\atmosphere\kips\kefir.kip")
    if exist "%sd%:\atmosphere\kips\loader.kip" (del "%sd%:\atmosphere\kips\loader.kip")
    if exist "%sd%:\switch\.overlays\sys-clk-overlay.ovl" (del "%sd%:\switch\.overlays\sys-clk-overlay.ovl")
)
  • Если %oc% не равна 1, удаляются различные файлы, связанные с разгоном:
    • Папка с содержимым для разгона.
    • Файлы kefir.kip и loader.kip (модули для Atmosphere).
    • Файл sys-clk-overlay.ovl, связанный с оверлеем для управления частотами.

5. Удаление папки oc

RD /s /q "%sd%:\oc"

Удаляется папка oc с разгонными профилями (если она существует).


6. Удаление файла hekate_ctcaer_*.bin

if exist "%sd%:\hekate_ctcaer_*.bin" (del "%sd%:\hekate_ctcaer_*.bin")

Удаляются файлы загрузчика Hekate (имя начинается с hekate_ctcaer_).


7. Копирование тем и файлов Atmosphere из указанной директории

if exist "Y:\Switch\\addons\themes" (xcopy "Y:\Switch\\addons\themes\*" "%sd%:\themes" /H /Y /C /R /S /E /I)
if exist "Y:\Switch\\addons\atmosphere" (xcopy "Y:\Switch\\addons\atmosphere\*" "%sd%:\atmosphere" /H /Y /C /R /S /E /I)

Если в диске Y:\Switch\addons существуют папки themes и atmosphere, их содержимое копируется на SD-карту.


8. Удаление папки .git

if exist "%sd%:\.git" (RD /s /q "%sd%:\.git")

Если на SD-карте есть папка .git (возможно, она попала туда случайно), она удаляется.


9. Восстановление файла nyx.ini

if exist "%sd%:\bootloader\nyx.bkp" (
    copy "%sd%:\bootloader\nyx.bkp" "%sd%:\bootloader\nyx.ini"
    del "%sd%:\bootloader\nyx.bkp"
)

Если файл резервной копии nyx.bkp существует, он восстанавливается как nyx.ini. Затем резервная копия удаляется.


10. Удаление папки pegascape, если она не используется

if %pegascape%==0 (
    if exist "%sd%:\pegascape" (RD /s /q "%sd%:\pegascape")
)

Если Pegascape отключен (%pegascape% равен 0), папка pegascape удаляется.


11. Удаление файлов boot.dat и boot.ini, если они не нужны

if %bootdat%==0 (
    if exist "%sd%:\boot.dat" (del "%sd%:\boot.dat")
    if exist "%sd%:\boot.ini" (del "%sd%:\boot.ini")
)

Если переменная %bootdat% равна 0, файлы boot.dat и boot.ini удаляются.


12. Восстановление файла dbi.config

if exist "%sd%:\switch\DBI\dbi.config_" (
    del "%sd%:\switch\DBI\dbi.config"
    rename %sd%:\switch\DBI\dbi.config_ dbi.config
)

Если временный файл dbi.config_ существует, он восстанавливается как dbi.config.


Закомментированные строки

@REM if exist "%sd%:\switch\tinfoil\locations.bkp" (
@REM     del "%sd%:\switch\tinfoil\locations.conf"
@REM     rename %sd%:\switch\tinfoil\locations.bkp locations.conf
@REM     )

Этот блок закомментирован. Предположительно, он восстанавливал файл конфигурации locations.conf из резервной копии.


Итог

Скрипт:

  1. Копирует файлы на SD-карту.
  2. Настраивает кастомные конфигурации для прошивки Atmosphere.
  3. Удаляет ненужные файлы.
  4. Восстанавливает или обновляет важные файлы.

Четвертый блок | Исправление атрибутов файлов и завершение установки

Описание работы этапа

1. Раздел “Fix attributes”

Этот раздел отвечает за приведение атрибутов файлов и папок на SD-карте в стандартное состояние, удаляя скрытые (-H) или архивные (-A) атрибуты у файлов и папок.

Примеры:

  • Если папка atmosphere существует, все её файлы и подпапки теряют атрибуты скрытости: attrib -A -H /S /D %sd%:\atmosphere\* attrib -A -H %sd%:\atmosphere
  • Аналогичные операции выполняются для других директорий: bootloader, config, switch, games, themes, и других.

2. Удаление ненужных файлов и папок

Скрипт удаляет специфические файлы и папки, которые, видимо, уже не нужны, либо являются временными файлами предыдущих настроек:

  • Удаление файлов, связанных с kefir: if exist "%sd%:\kefir" (RD /s /q "%sd%:\kefir")
  • Удаление файлов конфигурации для hekate: if exist "%sd%:\bootloader\hekate_ipl.ini" (del "%sd%:\bootloader\hekate_ipl.ini")
  • Удаление флагов, связанных с конкретными модулями: if %syscon%==0 ( del "%sd%:\atmosphere\contents\690000000000000D\flags\boot2.flag" )

3. Изменение конфигурации

Некоторые файлы заменяются или переименовываются для восстановления конфигурации:

  • Переименование резервных копий: if exist "%sd%:\bootloader\hekate_ipl_.ini" ( copy %sd%:\bootloader\hekate_ipl_.ini %sd%:\bootloader\hekate_ipl.ini /Y ) del "%sd%:\bootloader\hekate_ipl_.ini"

4. Удаление временных файлов

Скрипт удаляет временные файлы, такие как install.bat или резервные конфигурации:

if exist "%sd%:\install.bat" (del "%sd%:\install.bat")

5. Обработка ошибки “Неправильная SD-карта”

Если SD-карта не найдена или задана неверная буква диска, отображается сообщение с предложением выбрать другую букву:

:WRONGSD
cls
COLOR C

ECHO ----------------------------------------------------------
ECHO ======            Choosed SD letter is: %sd%:/          =====
ECHO ======       There is no SD card in drive %sd%:/        =====
ECHO ----------------------------------------------------------
ECHO.
ECHO. 
ECHO            1.  The card letter is correct
ECHO            2.  Choose another card letter
  • В зависимости от ввода пользователя (1, 2 или Q), выполняются соответствующие действия:
    • 1: Вернуться в основное меню.
    • 2: Выбрать другую SD-карту.
    • Q: Выход из программы.

6. Завершение работы

Когда все операции завершены, скрипт очищает временную директорию и завершает выполнение:

if exist "%wd%" (RD /s /q "%wd%\*")
pause>nul 2>&1
exit

Основные функции скрипта:

  1. Подготовка SD-карты:
    • Удаление ненужных файлов и папок.
    • Восстановление важных конфигурационных файлов.
    • Обновление атрибутов всех файлов и папок.
  2. Управление ошибками:
    • Проверка наличия SD-карты.
    • Интерактивное меню для исправления ошибок.
  3. Гибкость настроек:
    • Скрипт поддерживает разные режимы (например, использование или отключение syscon или missioncontrol).

Этот скрипт подходит для автоматизации процесса подготовки SD-карт для использования в устройствах, где требуется строгая структура папок и файлов.