Windows скрипт для копирования файла

Твой Сетевичок

Все о локальных сетях и сетевом оборудовании

Cкрипт для копирования файлов из одной папки в другую

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

Ниже будет представлены 2 скрипта, использующие «язык VBS», для элементарного перемещения файла из одной сетевой папки, (она конечно же, должна быть «расшарена») в другую.

vbs скрипт копирования файлов по локальной сети

  1. Данный скрипт подойдет для поштучного перемещения файлов из одной папки в другую:

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» #адрес папке куда будет копироваться файл.

Скрипт копирования файлов и папок по сети

  1. Для того чтобы скопировать всё содержимое папки используется следующий скрипт:

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. Стоит учитывать, что данный метод производит одиночное копирование, то есть, нельзя начать копирование, нажать на паузу и потом снова продолжить. Его синтаксис следующий:

Читайте также:  Как установить удаленные компоненты windows

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:

Читайте также:  Mac os снимок экран

Тут я сделал некоторые изменения: изменил имя новой папки, имя конечного файла, в результате, произойдёт создание в текущей папке каталога «Новая папка_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

Читайте также:  Интерфейс windows aero glass

Сообщения: 103
Благодарности: 0

Конфигурация компьютера
Материнская плата: 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, вам огромное спасибо за помощь. Для меня даже такой код сложный, а для вас как я вижу проще простого)

Сообщения: 2205
Благодарности: 1363

Поставил ключ /i и все заработало. »

——-
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Set «old_dir=Z:\очень важная папка»
Set «new_dir=\\Server\Test1\%username% »

хмм, а первые кавычки разве открывать нужно перед old а не когда путь указывается?
Set old_dir=»Z:\очень важная папка»
Set new_dir=»\\Server\Test1\%username%»

данный код попробую потестировать, но не сегодня

Сообщения: 2205
Благодарности: 1363

——-
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Последний раз редактировалось megaloman, 01-08-2019 в 15:22 .

Оцените статью