- Твой Сетевичок
- Все о локальных сетях и сетевом оборудовании
- Cкрипт для копирования файлов из одной папки в другую
- vbs скрипт копирования файлов по локальной сети
- Скрипт копирования файлов и папок по сети
- Объект FileSystemObject метод CopyFile
- Как копировать файлы на диск
- Блог о Linux и Windows
- Записки по настройке Debian Ubuntu и Microsoft Windows
- Скрипт для копирования файлов с проверкой и записью в лог-файл
- Скрипт для копирования файлов с проверкой и записью в лог-файл
- Windows скрипт для копирования файла
Твой Сетевичок
Все о локальных сетях и сетевом оборудовании
Cкрипт для копирования файлов из одной папки в другую
Копировать большое количество файлов с компьютера на компьютер по локальной сети — дело долгое и однообразное, и после первого часа такой рутинной работы она становится просто невыносимой и хочется, наконец, её автоматизировать. В этом может помочь простейший скрипт копирования файлов по сети, который и будет выполнять большинство действий за вас.
Ниже будет представлены 2 скрипта, использующие «язык VBS», для элементарного перемещения файла из одной сетевой папки, (она конечно же, должна быть «расшарена») в другую.
vbs скрипт копирования файлов по локальной сети
- Данный скрипт подойдет для поштучного перемещения файлов из одной папки в другую:
WScript.Echo «Готово.» # данные строки выводят текстовое уведомление/сообщение
WScript.Quit(0)
Dim fso
Set fso = CreateObject(«Scripting.FileSystemObject»)
fso.CopyFile «\\1-4ffc2e2aa3494\1\Рабочий стол\Test\1.vbs «, # в данной строке указывается адрес папки, из которой будет производиться копирование
«C:\Documents and Settings\Администратор\Рабочий стол\Test» #адрес папке куда будет копироваться файл.
Скрипт копирования файлов и папок по сети
- Для того чтобы скопировать всё содержимое папки используется следующий скрипт:
WScript.Quit(0)
Const OverWriteFiles = True # три нижние строки определяют параметры копирование всех файлов в из папки
Set objFSO = CreateObject(«Scripting.FileSystemObject»)
objFSO.CopyFolder «\\1-4ffc2e2aa3494\1\Рабочий стол\Test» ,
» C:\Documents and Settings\Администратор\Рабочий стол\Test \» , OverWriteFiles
Как видите, скрипт наилегчайший. Вам останется только создать текстовый документ, скопировать код и изменить его адреса в соответствии с вашей сетью (а именно те строки, где находятся адреса откуда и куда нужно скопировать файлы). После этого требуется сохранить скрипт с английской раскладкой и разрешением «.vbs».
Если копируемые файла требуется обновлять постоянно, можно полностью автоматизировать данный процесс, создав в «Планировщике задач» сценарий и выставить в параметрах временные интервалы.
Данные скрипты являются одними из самых элементарных. Можно воспользоваться «Командной строкой» и командной «xcopy /?».
После запуска команды вы можете выбрать те параметры, которые вам необходимы, и после этого создать собственный скрипт.
Объект FileSystemObject метод CopyFile
Доброго дня всем читателям блога scriptcoding.ru. В этой статье мы научимся программировать, а также рассмотрим, как копировать файлы в Windows программным путём и вручную…
По сути, сначала мы рассмотрим, как копировать файлы на диск в Windows ручным методом с помощью комбинаций клавиш и мышки, потом рассмотрим метод объекта FileSystemObject – CopyFile, который позволяет программным путём копировать файлы на диск или в указанную директорию, а потом начнём программировать.
И так, как копировать вручную файлы на диск? Да всё предельно просто, в зависимости от того, сколько нам нужно копировать файлов, мы можем выделить мышью один или несколько документов, а потом перетянуть их в другую папку или диск, предварительно удерживая клавишу «Ctrl«, отпускаем левую кнопку мыши и всё, файлы скопированы. Второй способ – использование комбинации клавиш, снова выбираем нужные документы, нажимаем комбинацию «Ctrl + C«, потом открываем нужную папку или диск и нажимаем комбинацию «Ctrl + V«. Стоит помнить тот момент, что если мы попытаемся копировать файлы и вставить в одно и то же место ( скопировали на диске «С» и туда же хотим снова вставить ), то ошибки не произойдёт, система автоматически переименует вставляемые файлы, чтобы не возник конфликт имён.
Как копировать файлы на диск
Хорошо, с одной теорией мы закончили, теперь можно приступить к другой И так, за копирование файлов на диск отвечает метод CopyFile класса FileSystemObject. Стоит учитывать, что данный метод производит одиночное копирование, то есть, нельзя начать копирование, нажать на паузу и потом снова продолжить. Его синтаксис следующий:
CopyFile (source, destination [,overwrite]) – как видим методу передаются три параметра, при этом, последний не является обязательным.
- source – данный параметр принимает строковое значение и указывает полный путь к файлу, который нужно скопировать, можно использовать подстановочные знаки: «?» – любой один символ и «*» – любое количество символов.
- destination – опять таки, полный путь, куда будет скопирован файл, при чём, можно указать новое имя и расширение.
- overwrite – если параметр установлен в логическое значение true – будет происходить замена, false – не производить замены (по умолчанию).
Хорошо, с теорией разобрались, теперь можно приступить к программированию. Для начала рассмотрим программный код на языке vbscript:
Давайте рассмотрим всё по пунктам. Сам сценарий производит создание папки «Новая папка_vbs» в текущем каталоге, для этого мы используем метод CreateFolder, после происходит копирование текущего файла (сценария) в созданную папку (метод CopyFolder класса FileSystemObject).
dim fso, new_folder – тут мы объявили переменные, fso – хранит ссылку на объект FileSystemObject, new_folder – хранит путь к новому каталогу.
set WshShell = CreateObject(«Scripting.FileSystemObject «) – тут мы создаем ссылку на экземпляр объекта Wscript.Shell, тут мы используем стандартную функцию языка vbscript для создания ссылки на класс – CreateObject, также, как видим, фигурирует ключевое слово set. Объект нужен для использования метода CopyFile.
set new_folder=fso.CreateFolder(«Новая папка_vbs») – тут происходит создание новой папки «Новая папка_vbs» с помощью метода CreateFolder, более детально, роботу данного метода я описал в статье «FileSystemObject метод CreateFolder». Как копировать файл на диск.
fso.CopyFile WScript.ScriptFullName, new_folder & «\тест_vbs.txt» , true – в данной строке мы производим процесс копирования текущего сценария в новый каталог, но уже под именем тест_vbs.txt. WScript.ScriptFullName содержит строку, которая определяет полный путь к текущему сценарию.
WScript.Echo «Процесс копирования завершен» – собственно, в самом конце мы выводим сообщение о завершении копирования.
Стоит обратить внимание, что я не включал проверку ошибок.
Хорошо, теперь давайте рассмотрим аналогичный пример, но уже на языке jscript:
Тут я сделал некоторые изменения: изменил имя новой папки, имя конечного файла, в результате, произойдёт создание в текущей папке каталога «Новая папка_js», и копирование в нее текущего сценария, в итоге мы получим текстовый документ «тест_js.txt».
И так, в этой статье мы рассмотрели, как копировать файлы на диск с помощью метода CopyFile класса FileSystemObject. Для реализации поставленной задачи мы программировали на языке vbscript и jscript.
Спасибо за внимание. Автор блога Владимир Баталий
Блог о Linux и Windows
Записки по настройке Debian Ubuntu и Microsoft Windows
Скрипт для копирования файлов с проверкой и записью в лог-файл
Скрипт для копирования файлов с проверкой и записью в лог-файл
robocopy (от англ. Robust File Copy) — утилита командной строки для репликации (не просто копирования) каталогов (папок). Она была доступна как часть Windows Resource Kit и представлена как стандартный компонент Windows Vista, Windows 7 и Windows Server 2008.
Что выполняет скрипт:
— копирует файлы из заданной папки;
— с введение лога, пишим имена скопированных файлов;
— и перед следующим копированием сверяем с записью в логах, если есть файл в логах — то его не копируем, если в логах отсутствует — копируем.
:: ( кодировка Dos 866 если имеется названия папок по русски )
@Echo off
:: ( путь откуда, без кавычек)
set $from=_ПУТЬ_ОТКУДА_
:: ( куда, без кавычек )
set $dest=_КУДА_
::
set $log=_ПУТЬ_ЛОГ_ФАЙЛА\copyfile.log
for /f «delims=» %%i in (‘dir «%$from%» /B/A:-D’) do Call :CheckLog «%%i»
:CheckLog
If Exist «%$log%» For /f «delims=» %%a in (%$log%) Do If «%%a»==»%
1″ Exit /B
robocopy «%$from%» «%$dest%» «%
1″ /minage:0
if %errorlevel%==1 (echo.Copy is successful — %
/MINAGE:n :: Минимальный возраст файла — исключить файлы, возраст которых менее n дней.
p.s.s Утилита robocopy это отличнейшая вещь, очень гибкий инструмент копирования и бэкапа. Вот не больший пример для backup
> robocopy С:\исходная_папка \192.168.0.1\целевая_папка /E /Z /COPY:TDASO /DCOPY:T /M /R:2 /W:5
В данном примере:
Мы копируем папку «исходная папка», находящуюся на локальном диске С:
Мы копируем эту папку на компьютер \192.168.0.1 в папку «целевая папка»
/E : Мы копируем все подпапки и файлы
/Z : Включаем поддержку докачки (на случай обрыва связи)
/COPY:TDASO : Копируем все атрибуты и ACL прав доступа NTFS (но не копируем атрибуты аудита)
/DCOPY:T : Копируем время создания папок
/M : Копируем только файлы с установленным атрибутом «A — Архивный» и сбрасываем этот атрибут, что позволяет нам копировать только измененные файлы.
/R : Количество повторных попыток копирования файла в случае, если копирование не удалось. Причем «не удалось» срабатывает и в том случае, если доступ к файлу закрыт. По-умолчанию = 1 бесконечно, потому копирование благополучно встанет на первом же файле, к которому не будет доступа.
/W : Задержка в секундах между попытками копирования. По-умолчанию = 30 секундам.
Заметка. Очень рекомендую задавать вручную параметры /R и /W, иначе при автоматической синхронизации она попросту зависнет, встретив на своем пути ошибку доступа.
Windows скрипт для копирования файла
Сообщения: 5454
Благодарности: 1046
Конфигурация компьютера | ||||
Материнская плата: Intel NUC8BEB | ||||
HDD: Samsung SSD 850 EVO 250 GB | ||||
Звук: Behringer UCA222 + M-Audio Studiophile AV 40 | ||||
ОС: Windows 10 Pro x64 | ||||
» width=»100%» style=»BORDER-RIGHT: #719bd9 1px solid; BORDER-LEFT: #719bd9 1px solid; BORDER-BOTTOM: #719bd9 1px solid» cellpadding=»6″ cellspacing=»0″ border=»0″> | ||||
Не завис а начал копирование. Либо у пользователя нет прав на запись в папку %new_dir% » |
в папочке было 3 файла (картина, документ ворд и эксель), доступ в папку есть (фул права). Пока не разобрался в чем дело, мб путь указан не верно, хотя перепроверил все 100 раз.
Пользователи просто будут работать уже на сервере в своей папке. » |
set old_dir=»D:\очень важная папка» set new_dir=»\\server\важные папки\%username%» xcopy %old_dir% %new_dir% /s /e /h /y » |
Кажется разобрался в чем дело. Дописал в конце кода pause и увидел как во время выполнения он спрашивает это каталог или файл. Поставил ключ /i и все заработало.
Ageron, вам огромное спасибо за помощь. Для меня даже такой код сложный, а для вас как я вижу проще простого)
Поставил ключ /i и все заработало. » |
——-
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.
Это сообщение посчитали полезным следующие участники:
Set «old_dir=Z:\очень важная папка» Set «new_dir=\\Server\Test1\%username% » |
хмм, а первые кавычки разве открывать нужно перед old а не когда путь указывается?
Set old_dir=»Z:\очень важная папка»
Set new_dir=»\\Server\Test1\%username%»
данный код попробую потестировать, но не сегодня