Начну с самых простых скриптов cmd bat:
утилиты для копирования:
copy /?
xcopy /?
robocopy /? (это если Resourse Kit есть Актуально для серверов.)
---
Простенький скрипт:
Код |
---|
@ECHO off
SET FILE1="z:\server\db\file1.doc"
SET FILE2="z:\server\db\file2.doc"
SET TEMP="c:\TEMP\"
SET RAR="c:\Program Files\WinRAR\WinRAR.exe"
SET NAME=%DATE%
SET FLASHDRIVE="m:\"
if exist %TEMP% rmdir /s /q %TEMP%
mkdir %TEMP%
if exist %FILE1% copy %FILE1% %TEMP%
if exist %FILE2% copy %FILE2% %TEMP%
%RAR% a -ep1 %FLASHDRIVE%\%NAME%.rar %TEMP%
rmdir /s /q %TEMP%
if exist %FLASHDRIVE%\%NAME%.rar @ECHO Succesful!!!
if not exist %FLASHDRIVE%\%NAME%.rar @ECHO ERROR
pause
|
Тут собственно все просто, единственно можно модернизировать: robocopy
Вариант скрипт на WBS:
' description: Скрипт перемещает файлы, папки и подпапки с одного источника в другой, в сети или локально.
' При этом происходит проверка на наличие и доступность файлов. При отсутствии, либо совпадении файлов
' происходит его перемещение и замена на новый.
'***********************************************
' Создание объектов оболочки и файловой системы
Set oShell = CreateObject("wscript.shell")
Set oFSO = CreateObject("Scripting.Filesystemobject")
Set WSNetwork = CreateObject("WScript.Network")
LogFolder = "c:\" ' место расположения лог-файла
StartFolder = "c:\1" ' откуда перемещаем
EndFolder = "c:\2\" ' куда перемещаем
'***********************************************
' обнуление и описание счетчиков, используемых в скрипте
num_files = 0 '- общее число обработанных файлов
num_SubFolder = 0 '- обработано папок и подпапок
'***********************************************
' Создание лог-файла
' Задаем имя лога
sLogName = "LogTemp_" & Date & "_" & Time
' Заменяем в имени все знаки на подчеркивания
sLogName = Replace(sLogName, ".", "_")
sLogName = Replace(sLogName, ":", "_")
sLogName = LogFolder & sLogName
' Создаем файл
Set oLogFile = oFSO.CreateTextFile(sLogName & ".log",true)
oLogFile.WriteLine "========== Script Information ==========" & vbCrLf
oLogFile.WriteLine "script name: Fail_Copying_Paste"
oLogFile.WriteLine "version: 1.0"
oLogFile.WriteLine "date: 21.02.13"
oLogFile.WriteLine "autor: MasterLin" & vbCrLf
'***********************************************
Set oEndFolder = CreateObject("Scripting.FileSystemObject")
' Проверяем доступность папки, в которую хотим произвести копирование
If oEndFolder.FolderExists (EndFolder) Then
' Записываем результат в лог
oLogFile.Writeline "Папка " & "'" & EndFolder & "'" & " доступна для работы" & vbCrLf
CopyFolder StartFolder,EndFolder
else
' Записываем результат в лог
oLogFile.Writeline
oLogFile.Writeline "Папка " & "'" & EndFolder & "'" & " в настоящий момент не доступна, либо не существует. Работа с ней прекращена." & vbCrLf
' Дублируем сообщение, выводом предупреждения на экран
WScript.Echo "Папка " & "'" & EndFolder & "'" & " в настоящий момент не доступна, либо не существует. Работа с ней прекращена."
End if
oLogFile.WriteLine "========== Отчет о копировании ==========" & vbCrLf
oLogFile.WriteLine "Скриптом было обработано - " & num_files & " файлов."
oLogFile.WriteLine "Скриптом было обработано - " & num_SubFolder & " подпапок."
oLogFile.WriteLine
oLogFile.WriteLine "========== Выполнение скрипта завершено ==========" & vbCrLf
WScript.Echo "Выполнение скрипта завершено."
Sub CopyFolder(sCopyFolder,sEndCopyFolder)
' Создание объекта Folder
Set oFolder = oFSO.GetFolder(sCopyFolder)
Set oEndCopyFolder = oFSO.GetFolder(sEndCopyFolder)
' Получение коллекции файлов
Set colFiles = oFolder.Files
' Обработка каждого файла из коллекции
For each oFile in colFiles
' Счетчик числа проверяемых файлов
num_files=num_files+1
' Проверяем существует уже такой файл в папке
If oFSO.FileExists(oFSO.BuildPath(oEndCopyFolder, oFile.Name)) Then
' Записываем результат в лог
oLogFile.Writeline "Такой файл " & oFile & "уже существует в папке " & oEndCopyFolder
' Проверяем насколько это свежая копия файла, для этого сравниваем даты создания двух файлов
oLogFile.Writeline "Переписываем его на новый."
oFSO.DeleteFile (oFSO.BuildPath(oEndCopyFolder, oFile.Name)), True
oFSO.MoveFile oFile, sEndCopyFolder
' Проверка на наличие ошибок
if err.Number <> 0 then
' Запись сообщения об ошибке в лог
oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description
' Очистка ошибки
Err.Clear
End if
else
' Если файла нет, то просто перемещаем его без всяких записей в лог
oFSO.MoveFile oFile, sEndCopyFolder
' Проверка на наличие ошибок
if err.Number <> 0 then
' Запись сообщения об ошибке в лог
oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description
' Очистка ошибки
Err.Clear
End if
End if
Next
' Проверяем все папки и подпапки
oLogFile.Writeline "Обрабатываем и перемещаем все подпапки из папки " & oEndCopyFolder & vbCrLf
' Получение коллекции подпапок
Set colSubFolders = oFolder.SubFolders
' Обработка каждой подпапки
For Each oSubFolder In colSubFolders
oLogFile.Writeline "Проверяем подпапку " & oSubFolder
' Счетчик обработанных папок и подпапок
num_SubFolder=num_SubFolder+1
' Проверяем существует уже такая подпапка в папке, если ее нет, то сразу перемещаем
' Если есть, то сообщаем об этом и перемещаем с заменой.
If oFSO.FolderExists(oFSO.BuildPath(oEndCopyFolder, oFSO.GetBaseName(oSubFolder.Path))) Then
' Записываем результат в лог
oLogFile.Writeline "Такая подпапка " & oSubFolder & " уже существует в папке " & oEndCopyFolder
oLogFile.Writeline "Перезаписываем ее на новую."
oFSO.DeleteFolder (oFSO.BuildPath(oEndCopyFolder, oFSO.GetBaseName(oSubFolder.Path)))
oFSO.MoveFolder oSubFolder, sEndCopyFolder
' Проверка на наличие ошибок
if err.Number <> 0 then
' Запись сообщения об ошибке в лог
oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description
' Очистка ошибки
Err.Clear
End if
else
' Перемещаем папку
oFSO.MoveFolder oSubFolder, sEndCopyFolder
' Проверка на наличие ошибок
if err.Number <> 0 then
' Запись сообщения об ошибке в лог
oLogFile.Writeline "-----> Error # " & CStr(Err.Number) & " " & Err.Description
' Очистка ошибки
Err.Clear
End if
End if
Next
End Sub