Tôi có một tập lệnh bó Windows đơn giản, được chạy bởi phần mềm sao lưu dưới dạng hành động sao lưu trước. Nó chỉ đơn giản là tìm kiếm các bản SQL mới nhất, nén chúng vào kho lưu trữ 7zip nhỏ hơn 10 lần, sau đó sao lưu đám mây nhặt nó lên và gửi đến bộ lưu trữ đám mây để lưu trữ.
BATCH tạo tên tệp có DATE ở phía trước: 07-10-2018-bak.7z
Nhưng tôi có vấn đề với tập tin BATCH:
- Khi tôi chạy thủ công, nó sẽ thực thi tốt và tạo tên tệp 07-10-2018-bak.7z trong thư mục được cung cấp
- nhưng khi tôi chạy nó thông qua phần mềm sao lưu (với tư cách là người dùng HỆ THỐNG) dưới dạng hành động sao lưu trước, thì thay vào đó, nó tạo SUB-FOLDERS cho mỗi DASH, như thế này:
\07\10\2018-bak.7z
Tôi đã làm ECHO
từng dòng lệnh, và nó chỉ hiển thị tốt. Ngay cả khi tôi chạy các dòng lặp lại theo cách thủ công, chúng KHÔNG tạo thư mục, nhưng nếu có, tên tệp đầy đủ có ngày bao gồm:
"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"
Bất cứ ý tưởng mà tôi bỏ lỡ điểm?
@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
)
echo on
bạn sẽ thấy 7z.exe
dòng lệnh được mở rộng như thế nào .
time/t|find "M"
trả về không có gì trong vỏ Windows 7 cmd của tôi.