From 33c33d08f0565b459af30fbd0175170f16cde32f Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 29 Jun 2026 15:26:15 +0200 Subject: [PATCH] fix: save BAT_DIR before shift (shift changes %0 in cmd.exe) --- raskidator.bat | 42 ++++++++++-------------------------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/raskidator.bat b/raskidator.bat index 351f40f..14ceda0 100644 --- a/raskidator.bat +++ b/raskidator.bat @@ -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