Помощь в поиске ошибки bat файла для удаления backup по маске.
Добрый день, подскажите где ошибка в bat файле. Имеется батник который по запуску удаляет backup с маской *%y%_%m%_%d%*.bak , при наличии бэкапа за сегодняшний день. Работает почему-то с датами с 10 числа месяца, если запустить до 9 числа, то выдает
Ошибку
================================ 08.03.2016 ================================ Неправильное число. Числовые константы должны быть десятичными (17) шестнадцатеричными (0x11),или восьмеричными (021). 2016_3_ Непредвиденное появление: 10. Сам код bat файла
::=====================================================
::===================================================== @echo off set dd2 = %date% echo ================================ echo %date:~0,10% echo ================================ set /a d=%date:~0,2% set /a m=%date:~3,2% set /a y=%date:~6,4% echo %y%_%m%_%d% if %m% lss 10 ( set m=0%m% ) if %d% lss 10 ( set d=0%d% ) REM set /a d=1 echo %y%_%m%_%d% if not exist *%y%_%m%_%d%*.bak ( echo CURRENT FILE NOT EXISTS exit ) set /a d=%date:~0,2% set /a m=%date:~3,2% set /a y=%date:~6,4% :loop set /a d-=1 if %d% lss 1 ( set d=31 set /a m-=1 if %m% lss 1 ( set m=12 set /a y-=1 ) ) if %m% lss 10 ( set m=0%m% ) if %d% lss 10 ( set d=0%d% ) echo %y%_%m%_%d% del *%y%_%m%_%d%*.trn -Y del *%y%_%m%_%d%*.bak -Y echo ================================ if %d% equ 31 ( set d=30 ) echo %y%_%m%_%d% del *%y%_%m%_%d%*.trn -Y del *%y%_%m%_%d%*.bak -Y echo ================================ if %d% equ 30 ( set d=29 ) echo %y%_%m%_%d% del *%y%_%m%_%d%*.trn -Y del *%y%_%m%_%d%*.bak -Y echo ================================ if %d% equ 29 ( set d=28 ) echo %y%_%m%_%d% del *%y%_%m%_%d%*.bak -Y del *%y%_%m%_%d%*.trn -Y pause |
PunksNotDead_x@twitter, там же ясно указано — командный процессор воспринимает числа, начинающиеся с нуля, как восьмеричные, а восьмеричных чисел «08» и «09» быть не может.
Самый простой вариант — перейти на WSH или PoSH. Сразу отпадут проблемы с вычислением разницы дат. |
Время: 03:43. |
Время: 03:43.
© OSzone.net 2001-