fix: save BAT_DIR before shift (shift changes %0 in cmd.exe)

This commit is contained in:
admin committed 2026-06-29 15:26:15 +02:00
1 parent f8ced759f5
commit 33c33d08f0
1 file changed
+10 -32
+10 -32
View File
@@ -6,10 +6,9 @@ echo ========================================
echo Raskidator-3000 — сортировка фотографий
echo ========================================
echo.
echo [DEBUG] %%0 = %0
echo [DEBUG] %%~f0 = %~f0
echo [DEBUG] %%~dp0 = %~dp0
echo.
:: Сохраняем путь к папке с батником ДО shift (shift меняет %0)
set "BAT_DIR=%~dp0"
:: Определяем режим (--dry-run или обычный)
set "DRY="
@@ -30,28 +29,13 @@ if not "%DRY%"=="" echo Режим: ПРОБНЫЙ (dry-run)
echo.
:: Проверяем, существует ли скрипт
set "SCRIPT=%~dp0organize.py"
echo [DEBUG1] SCRIPT = "%SCRIPT%"
dir "%SCRIPT%" >nul 2>&1 && echo [DEBUG1] FILE EXISTS || echo [DEBUG1] FILE NOT FOUND
if exist "%SCRIPT%" goto :found
:: Fallback: если %~dp0 вернула неверный путь (контекстное меню),
:: ищем organize.py в той же папке, где лежит сам батник
set "SCRIPT=%~f0"
echo [DEBUG2] SCRIPT = "%SCRIPT%"
call :getdir "%SCRIPT%" SCRIPTDIR
echo [DEBUG2] SCRIPTDIR = "%SCRIPTDIR%"
set "SCRIPT=%SCRIPTDIR%organize.py"
echo [DEBUG2] NEW SCRIPT = "%SCRIPT%"
dir "%SCRIPT%" >nul 2>&1 && echo [DEBUG2] FILE EXISTS || echo [DEBUG2] FILE NOT FOUND
if exist "%SCRIPT%" goto :found
:: Совсем не нашли
echo [ОШИБКА] Не найден organize.py рядом с батником.
echo Ожидаемый путь: %SCRIPT%
goto :end
:found
if exist "%BAT_DIR%organize.py" (
set "SCRIPT=%BAT_DIR%organize.py"
) else (
echo [ОШИБКА] Не найден organize.py рядом с батником.
echo Ожидаемый путь: %BAT_DIR%organize.py
goto :end
)
:: Пробуем python (наиболее распространён)
python "%SCRIPT%" %DRY% "%TARGET%"
@@ -73,9 +57,3 @@ echo.
echo ========================================
echo Нажми любую клавишу для выхода...
pause >nul
exit /b
:: Извлекает директорию из полного пути
:getdir
set "%2=%~dp1"
exit /b