У меня есть простой пакетный скрипт Windows, который запускается программой резервного копирования как предварительное резервное копирование. Он просто ищет последние дампы SQL, сжимает их в 10-кратный меньший по размеру архив 7zip, а затем резервное копирование в облачном хранилище берет его и отправляет в облачное хранилище для архивирования.
BATCH создает имя файла с датой DATE:07-10-2018-bak.7z
Но у меня проблема с файлом BATCH:
- когда я запускаю его вручную, он работает очень хорошо и создает имя файла 07-10-2018-bak.7z в предоставленной папке
- но когда я запускаю его с помощью программного обеспечения для резервного копирования (как пользователя SYSTEM) в качестве действия перед резервным копированием, вместо этого он создает подпапки для каждого DASH, например:
\07\10\2018-bak.7z
Я сделал ECHO
каждой командной строки, и она отрисовывается просто отлично.
Даже если я запускаю отраженные строки вручную, они НЕ создают папки, но, как и должно быть, полное имя файла с указанием даты:
"c:\Program Files\7-Zip\7z.exe" a -mx7 -stl -y "D:\SQL\Backup-Last-Only\\**07-10-2018-bkp.7z**" "D:\SQL\Backup\SklSistem_FULL_sob.BAK"
Есть идеи, где я упустил смысл?
@echo off & setlocal enabledelayedexpansion
del D:\SQL\Backup-Last-Only\*.7z /Q
time/t|find "M" && set t=1,4* || set t=1,3*
for /f "skip=1 tokens=%t%" %%a in ('dir/a-d/tw/o-d D:\SQL\Backup\*FULL*.BAK^|find ":"') do (
if %%a==%date:~-10% (
set archdate=%%a
set archdate=!archdate:.=-!
"c:\Program Files\7-Zip\7z.exe" a -mx7 -stl -y "D:\SQL\Backup-Last-Only\!archdate!-bkp.7z" "D:\SQL\Backup\%%c"
) else goto:eof
)