Будьте осторожны, в нескольких версиях из линейки 3.4.2 возможна установка стороннего ПО : uTorrent 3.4.2 build 28913 втихомолку устанавливае.... Проблема касается только нескольких версий, но статью обязательно прочтите.
@echo off
for /f "tokens=2 delims=:" %%a in ('chcp') do set src_cp=%%a
chcp 65001
cd /D "%~dp0"
rem set PATH_TO_VACUUM=%SYSTEMDRIVE%\Programs\SASPlanet
forfiles.exe /p "%PATH_TO_VACUUM%" /s /m *.db /c "cmd /c (\"%~dp0sqlite3.exe\" -batch @path vacuum)"
forfiles.exe /p "%PATH_TO_VACUUM%" /s /m *.sqlite /c "cmd /c (\"%~dp0sqlite3.exe\" -batch @path vacuum)"
forfiles.exe /p "%PATH_TO_VACUUM%" /s /m *.sqlitedb /c "cmd /c (\"%~dp0sqlite3.exe\" -batch @path vacuum)"
chcp %src_cp%
sqlite3.exe -batch @path vacuum
"не удаётся найти указанный файл". Подскажите, пожалуйста, а как указать путь в кавычках к sqlite3.exe для forfiles, ибо как не пишу - ничего не работает и сплошные ошибки :(@echo off
cd /D "%~dp0"
set PATH_TO_VACUUM=%SYSTEMDRIVE%\Programs\SASPlanet
echo %~dp0
if exist "%~dp0" (
echo OK
)
echo %~dp0sqlite3.exe
if exist "%~dp0sqlite3.exe" (
echo OK
)
echo %PATH_TO_VACUUM%
if exist "%PATH_TO_VACUUM%" (
echo OK
)
rem pause
rem выдаёт правильные имена файлов
rem forfiles.exe /p "%PATH_TO_VACUUM%" /s /m *.sqlitedb /c "cmd /c echo @path"
pause
rem так НЕ работает
rem forfiles.exe /p "%PATH_TO_VACUUM%" /s /m *.sqlitedb /c "sqlite3.exe -batch @path vacuum"
rem так НЕ работает
rem forfiles.exe /p "%PATH_TO_VACUUM%" /s /m *.sqlitedb /c "^"%~dp0sqlite3.exe^" -batch @path vacuum"
rem если напрямую указать имя файла то работает.
rem sqlite3.exe -batch C:\Programs\SASPlanet\cache_sqlite\yahyb\z19\155\80\620.320.sqlitedb vacuum
rem если напрямую указать имя файла то работает.
rem sqlite3.exe -batch "C:\Programs\SASPlanet\cache_sqlite\yahyb\z19\155\80\620.320.sqlitedb" vacuum
pause
s:\Патчи\Универсальные\Оптимизация баз sqlite приложений\sqlite-tools>sqlite3.exe -batch "c:\Programs\SASPlanet\cache_sqlite\Both\z3\0\0\0.0.sqlitedb" vacuum
@echo off
cd /D "%~dp0"
set PATH_TO_VACUUM=%SYSTEMDRIVE%\Programs\SASPlanet
rem печатает корректный путь
echo %~dp0
rem печатает корректный путь
echo %~dp0sqlite3.exe
rem печатает корректный путь
echo %PATH_TO_VACUUM%
pause
rem тут корректные пути печатаются
forfiles.exe /p "%PATH_TO_VACUUM%" /s /m *.sqlitedb /c "cmd /c echo @path"
pause
rem а тут всё: фай не существует или ошибка в синтаксисе команды или sqlite3 не существует, я уже как только не пробовал писать - не работает никак, а правильно я вообще не понимаю как написать ибо кавычки дополнительные никак не поставить.
forfiles.exe /p "%PATH_TO_VACUUM%" /s /m *.sqlitedb /c "cmd /c sqlite3.exe -batch @path vacuum"
pause
В общем пока я прихожу к выводу что в 2009 оно не было готово для переезда и сейчас, 10 лет спустя, тоже не готово. Пока я ещё не окончательно потерял надежду сделать перенос проектов хотя бы в этот заход по человечески.