Переміщення поштової папки з одного місця в інше за допомогою пакетного файлу


0

Я працюю над наступним сценарієм, використовуючи пакетний файл:

  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?


Ви вже отримали всю інформацію. Просто скористайтеся move(ви отримали шлях вже там, де файл знаходиться зараз) та видаліть файл після цього, використовуючи del.
Сет

Я використовував наступне для кроку 3, і він працює. перемістити% Output_Path% * \\ Нове місце \ qlikview
Giri

Крім того, крок 4: я не в змозі видалити "Daily_backup_5-14-2017" після створення Daily -backup_5-15-2017 блискавки. Чи можете ви мені допомогти з вищезазначеними питаннями?
Vindhya Giri

Чи містить ваша цільова папка кілька старих версій? Якщо не просто видалено все в ньому. В іншому випадку, як ви отримаєте %today%, можливо, ви зможете скористатися цим методом, щоб отримати дату попереднього дня.
Сет

Я використовую цю змінну: встановити сьогодні =% Місяць% -% День% -% Рік% Як ви вже згадували, я переслідував видалення всього в ній до переміщення нової папки. Крок 2: Zip% Output_Path% \ Daily_backup_% сьогодні% .zip% Output_Path% Крок 3: del \\ Нове розташування папки * .zip Крок 4: переміщення% Output_Path% \ Daily_backup_% сьогодні% .zip до \\ Нове розташування папки Але я я застряг у написанні умови, якщо інше. Я намагався використовувати% ERRORLEVEL%, але не зміг його працювати. Я хочу, щоб крок третій відбувся лише в тому випадку, якщо крок 2 успішно виконаний.
Vindhya Giri

Відповіді:


0

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

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

Хоча ви пояснювали в одному зі своїх коментарів, що ви використовуєте наступний код, щоб призначити змінну сьогодні, це насправді не пояснює багато. Змінні, які ви використовуєте для створення %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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.