Urik_Kane

open_in_VTFEdit_add

Oct 15th, 2020 (edited)
1,275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 4.64 KB | None | 0 0
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title Add VTFEdit context menu entries
  4.  
  5. set default_extensions=dds,jpg,png,psd,tga
  6.  
  7. :check_elevation
  8. net session >nul 2>&1
  9. if not %errorlevel%==0 echo   & echo Error: Must run as administrator. & pause>nul & goto :eof
  10.  
  11. cd /d "%~dp0"
  12.  
  13. set foundcount=0
  14. :check_default_location
  15. if exist "%programfiles%\Nem's Tools\VTFEdit\vtfedit.exe" CALL :LogFoundFolder "%programfiles%\Nem's Tools\VTFEdit\VTFEdit.exe"
  16.  
  17. :check sourcesdk binaries
  18. if exist "..\..\script_files\binaries\vtfedit.exe" ( cd..\.. & CALL :LogFoundFolder "!cd!\script_files\binaries\VTFEdit.exe")
  19.  
  20. :check nearby
  21. if exist "%~dp0vtfedit.exe" ( CALL :LogFoundFolder "%~dp0VTFEdit.exe")
  22.  
  23. if !foundcount!==0 echo Could not auto-find any installations. & goto :hintcustomfolder
  24. if !foundcount!==1 goto :ConfirmFolder
  25. FOR /L %%F IN (1,1,%foundcount%) DO ( if ""!folderidlist!=="" ( set folderidlist=%%F) else ( set folderidlist=!folderidlist!,%%F))
  26.  
  27. :SelectFoundFolder
  28. echo.
  29. echo please choose folder ^( !folderidlist! or custom^)
  30. FOR /L %%F IN (1,1,%foundcount%) DO ( echo  %%F     !foundpath%%F!)
  31. echo.
  32. set folderid=
  33. set /p folderid="enter number !folderidlist! or word ^"custom^"   = "
  34. if not "!folderid!"=="" (
  35.     set "folderid=!folderid: =!"
  36.     for %%A in (!folderid!) do ( if /i "%%~A"=="custom" goto :hintcustomfolder)
  37.     for /f "delims=1234567890" %%A in ('echo !folderid!') do echo ERROR: !folderid! - only numbers are allowed^^! & goto :SelectFoundFolder
  38.     for %%A in (%folderidlist%) do if "!folderid!"=="%%A" (
  39.         set "installpath=!foundpath%%A!"
  40.         echo. & echo Selected folder: !installpath!
  41.         goto :hintextensions
  42.     )
  43.     echo ERROR: !folderid! is NOT a valid option^^!
  44. )
  45. goto :SelectFoundFolder
  46.  
  47. :hintcustomfolder
  48. echo.
  49. echo Please enter VTFEdit folder
  50. echo.
  51. :AskCustomFolder
  52. set installpath=
  53. set /p installpath="Enter VTFEdit.exe folder "
  54. for %%P in (%installpath%) do goto :next
  55. goto :AskCustomFolder
  56. :next
  57. set installpath=%installpath:"=%
  58. if "%installpath:~-1%"=="\" set "installpath=%installpath:~0,-1%"
  59. if "%installpath:~-1%"=="/" set "installpath=%installpath:~0,-1%"
  60. for %%P in (%installpath%) do (
  61.     if exist "%installpath%" (
  62.     if not "%%~xP"=="" if /i "%%~nxP"=="VTFEdit.exe" ( CALL :SetCustomFolder "%installpath%" & goto :ConfirmFolder)
  63.     if exist "%installpath%\VTFEdit.exe" ( CALL :SetCustomFolder "%installpath%\VTFEdit.exe" & goto :ConfirmFolder)
  64.     )
  65. )
  66. echo  & echo Error^: Could not find installation in provided folder. & echo. & goto :AskCustomFolder
  67.  
  68. :hintextensions
  69. echo.
  70. echo Please enter file extensions to add, divided by comma, lowercase, no dots or just press enter for default list
  71. echo.
  72. :askextensions
  73. set /p extensions="What extensions to add for (default %default_extensions%): "
  74. if not "!extensions!"=="" (
  75.     set "extensions=!extensions: =!"
  76.     for /f "tokens=1 delims=abcdefghijklmnopqrstuvwxyz1234567890," %%A in ('echo !extensions!') do (
  77.         set "extensions=%default_extensions%"
  78.         echo Warning: input incorrect, will use default setting ^(%default_extensions%^)
  79.         pause
  80.     )
  81. ) else ( set "extensions=%default_extensions%" )
  82.  
  83. :: exec for all extensions
  84. for %%E in (%extensions%) do CALL :SetKeys %%E
  85.  
  86. :: results
  87. echo.
  88. echo -------------------------------------------------------
  89. if "!processedcount!"=="" ( echo  No entries added ) else ( echo  !processedcount! entries added: !processed! )
  90. echo -------------------------------------------------------
  91. echo.
  92. pause & goto :eof
  93.  
  94.  
  95. :SetKeys
  96. reg add "HKCR\SystemFileAssociations\.%1\shell\VTFEdit.open" /f /v "" /t REG_SZ /d "Open in VTFEdit">nul 2>&1
  97. reg add "HKCR\SystemFileAssociations\.%1\shell\VTFEdit.open" /f /v "Icon" /t REG_SZ /d "\"%installpath%\",0">nul 2>&1
  98. reg add "HKCR\SystemFileAssociations\.%1\shell\VTFEdit.open\command" /f /v "" /t REG_SZ /d "\"%installpath%\" \"%%1\"">nul 2>&1
  99. if !errorlevel!==0 CALL :LogFileType %1
  100. goto :eof
  101.  
  102. :LogFileType
  103. if "!processedcount!"=="" ( set "processedcount=1" ) else ( set /a "processedcount=!processedcount!+1" )
  104. if "!processed!"=="" ( set "processed=%1" ) else ( set "processed=!processed!,%1" )
  105. goto :eof
  106.  
  107. :LogFoundFolder
  108. set /a foundcount=!foundcount!+1
  109. echo.
  110. echo VTFEdit installation found: "%~1"
  111. set "foundpath!foundcount!=%~1"
  112. goto :eof
  113.  
  114. :SetCustomFolder
  115. echo.
  116. echo VTFEdit custom installation: "%~1" & echo.
  117. set "foundpath1=%~1"
  118. goto :eof
  119.  
  120. :ConfirmFolder
  121. set proceed=
  122. set /p "proceed=Use this installation (Y/N)?"
  123. if not "!proceed!"=="" (
  124.     set "proceed=!proceed: =!"
  125.     for /f "delims=yYnN" %%A in ('echo !proceed!') do goto :ConfirmFolder
  126. )
  127. if /i !proceed!==y ( set "installpath=%foundpath1%" & goto :hintextensions)
  128. if /i !proceed!==n ( echo. & goto :hintcustomfolder)
  129. goto :ConfirmFolder
Add Comment
Please, Sign In to add comment