Я работаю по следующему сценарию, используя командный файл:

  1. Скопируйте определенные подпапки из папки и заархивируйте их в новое место.

    Zip %Output_Path%\ Apps_backup_%today%.zip \\%Server%\QlikViewfolder\Common\apps\*.qvw
    
    Zip %Output_Path%\_Gen_backup_%today%.zip \\%Server%\QlikViewfolder\Common\generators\*.* 
    
  2. сжать все заархивированные папки в одну папку

    Zip %Output_Path%\Daily_backup_%today%.zip %Output_Path%
    

    Я делаю этот шаг, потому что я хочу, чтобы все файлы были в одной папке. Я не нашел способ, где я могу скопировать определенные подпапки из папки и напрямую скопировать в один почтовый индекс.

  3. Переместите почтовые папки в новое место.

  4. После перемещения удалите папку zip предыдущего дня

Я был в состоянии сделать шаг 1 и 2. Но не в состоянии сделать шаг 3. Не могли бы вы посоветовать как на шаге 3, так и на 4?

2 ответа2

0

Вы уже получили важную информацию на месте. Вы знаете исходные и целевые имена файлов / каталогов, и у вас есть переменная %today которая содержит текущую дату.

Для перемещения файла вы можете использовать команду move или команду copy . Важной частью является то, что у вас есть имя файла вашего резервного архива (%Output_Path%\Daily_backup_%today%.zip). Если вы используете команду копирования, позже вам придется использовать del для удаления исходного файла.

Хотя в одном из ваших комментариев вы объяснили, что используете следующий код для присвоения переменной today, на самом деле это мало что объясняет. Переменные, которые вы используете для построения %today , не являются стандартными. Итак, вы уже выполнили команду для их создания.

set today=%Month%-%Day%-%Year% 

Если вы посмотрите на Как получить и отобразить вчерашнюю дату? и как получить вчерашнюю дату в командном файле?[дубликата] вы обнаружите, что, очевидно, нет простого способа получить вчерашнюю дату в партии. Но вы, вероятно, могли бы использовать эти решения.

Как отмечается в вашем комментарии, вы используете более простой подход, чтобы удалить "все" старые файлы (которые должны быть только один), а затем просто переместить новый файл.

Теперь вы хотите проверить, была ли операция успешной, прежде чем продолжить. Значение %errorlevel% зависит от приложения, с которым вы имеете дело. В качестве простого примера, следующее будет возвращать 0, что будет означать, что не было ошибки. Какой тип является правдой, но, вероятно, не то, что вы действительно хотите.

del C:\Temp\ThisFileDoesn'tExist.txt
echo %errorlevel%

Хороший вопрос с информацией об этом, кажется, проверить, была ли команда успешной в командном файле.

Я не знаю, какую zip-программу вы используете, и вам придется проверять документацию, чтобы узнать, какие значения ожидать и т.д., Но в то же время, вместо проверки возвращаемого значения, вы можете проверять всякий раз, когда существует ожидаемый файл. Хороший пример для этого - Как проверить, существует ли файл внутри командного файла [дубликата].

Итак, что было бы возможным решением?

  1. Создайте свои файлы, как вы делали раньше
  2. Проверьте, существует ли ваш файл резервной копии. Это не проверяет, были ли обнаружены ошибки, но, по крайней мере, вы знаете, что что-то было записано в файл, который соответствует названию, которое вы хотите
  3. Удалить старые резервные копии
  4. Переместить новый файл резервной копии
0

Вы ищете команду xcopy . Установите начальное и конечное положения, напр. как xcopy "from" "to"

@echo off
xcopy "download.zip" "D:\Games"
pause

если это не работает, попробуйте xcopy "" "D:\Games" download.zip

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .