![]() |
Копирование файла из одной папки в другую в определенные интервалы времени (bat)
Добрый день уважаемые форумчане
Знаю, что такую задачу можно реализовать, с помощью bat файла, но не знаю как его написать, поэтому обращаюсь к Вам за помощью Есть папки : Откуда : T:\Откуда Куда : C:\Users\UserName\Desktop\Куда Необходимо чтобы bat файл, в 09 :00, в 12:00 и в 17:00, делал копию файла Презентация.pptx, который находится в папке Откуда и помещал его в папку Куда, при этом архивировал его в zip архив. Название архива должно состоять из названия копируемого файла, в нашем случае, это Презентация и даты и времени копирования. Например Презентация_дата копирования_время копирования Буду признателен за Вашу помощь |
pinguindell, в пакетных файлах нет встроенных средств для создания архивов. Посему лучшим вариантом из встроенных средств будет использование PowerShell, наподобие:
Код:
Add-Type -AssemblyName 'System.IO.Compression.FileSystem' Цитата:
|
pinguindell, Посредством бесплатного архиватора 7Z (имя файла и путь укажите свои,
при наличии в именах файла/папок кириллицы озаботьтесь сохранить скрипт в 866 кодировке) Код:
@Echo Off Цитата:
|
Iska, спасибо большое !
и еще небольшое дополнение, для запуска power shell скрипта через планировщик, без отображения окна PowerShell, написал скрипт vbs, который запускает все это великолепие в фоновом режиме, без показа окна консоли Код:
command = "powershell.exe -nologo -noninteractive -command C:\Users\user_name\Desktop\ps_script.ps1" megaloman , также спасибо большое, буду изучать и Ваш вариант |
Цитата:
Код:
FileIn = "Z:\Box_In\Вязкость.png" |
Цитата:
|
Iska, Скобки там не существенны, хотя лишнее - всегда во вред. Хуже, что скрипт работает корректно только при запуске посредством Wscript, с Cscript писАть в архив не хочет.
|
Цитата:
Собственно, всю разницу можно увидеть на таком примере: Скрытый текст
Код:
Option Explicit Цитата:
По умолчанию, в VBScript параметры передаются по ссылке (в стек кладётся не значение переменной-параметра, а ссылка на саму переменную-параметр), посему, если изменить значение аргумента внутри процедуры/функции — это отразится на значении самого переданного параметра (поскольку на самом деле работа идёт как раз с ним). Когда аргумент заключается в скобки — тем самым сначала вычисляется выражение в скобках, а затем уже это вычисленное значение передаётся в процедуру/функцию. В таких языках, как, например, AutoIt — там практически любой вызов оформляется скобками, а вот в VBScript — скобки используются только тогда, когда вызов осуществляется в правой части выражения. В противном случае скобки интерпретируются не как скобки при вызове процедуры/функции, а как необходимость вычисления выражения. Когда у нас имеется несколько параметров — ничего страшного, попытка такого вызова: Код:
SomeSub (strValue1, strValue2) Код:
SomeSub (strValue) Цитата:
|
Iska, wscript.exe 1,4G съедает без проблем, сscript.exe и с 3 байтами не справляется. Но если вставить sleep (у меня 30 сек)
Код:
............ |
megaloman, посмотрел. Дело совсем не в том, под каким хостом исполняется скрипт — wscript.exe/cscript.exe. Уберите завершающее:
Код:
WScript.Echo "=== " + Zip + " Done" Повторяю, метод .CopyHere() работает асинхронно с поздним связыванием VBScript, посему — увы и ах :(. |
Iska,
Цитата:
|
Цитата:
|
Iska, В общем, корявство. Можно, конечно, сделать долгий слип, заведомо достаточный для конкретной задачи.
|
megaloman, да, конечно.
|
Iska, pinguindell, Для себя делаю резюме:
Вариант без стороннего архиватора
Этот вариант не годится для размещения в планировщике, так как обязательно надо отследить завершение архивации. Строка
MsgBox "После окончания процесса записи в архив нажмите ОК" обязательна. Код:
FileIn = "Z:\Box_In\С Днем Рождения.ppt" Как альтернатива, в предыдущем коде можно вставить заведомо бОльшее время ожидания чем требуется для завершения создания архива. Этот вариант можно поместить в планировщик. Раз архивирование делается с интервалом в часы, то и время ожидания можно поставить большое, например, 300 сек
MsgBox необходимо удалить Код:
.............. Вариант со сторонним архиватором, например, 7Z, запускаемым из-под vbs. Без проблем отработает в назначенных заданиях
Код:
FileIn = "Z:\Box_In\С Днем Рождения.ppt" |
pinguindell, можно вообще обойтись без файла со сценарием в назначенных заданиях.
Код:
mshta vbscript:execute("fRAR="" """"Z:\Box_Arc\С Днем Рождения.ppt_.zip"""""" : fIn="" """"Z:\Box_In\С Днем Рождения.ppt"""""" : RAR=""""""C:\Program Files\WinRAR\Rar.exe"""" a -ep -dh -agYYYYMMDD-HHMMSS"" : R=CreateObject(""WScript.Shell"").Run(RAR+fRAR+fIn, 0, False) :close") |
*** let me Google that for you ***
Код:
|
Время: 22:23. |
Время: 22:23.
© OSzone.net 2001-