Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Скрипт для копирования из 4 сетевых папок в одну

Ответить
Настройки темы
VBS/WSH/JS - Скрипт для копирования из 4 сетевых папок в одну

Новый участник


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

Профиль | Отправить PM | Цитировать


Возникла необходимость копирования текстовых файлов из 4 сетевых папок в одну. Я так понимаю для одной папки будет что-то типо такого:
Код: Выделить весь код
Option Explicit
 
Dim objFSO
Dim strMask
 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
 
With objFSO
    For Each strMask In Array("*.txt")
        .MoveFile .BuildPath("\\server1\share", strMask), "\\server2\Destination"
    Next
End With
 
Set objFSO = Nothing
 
WScript.Quit 0
А как будет для 4 папок? Плюс есть сложность - в именах файла есть символы [ и ]

Отправлено: 22:20, 02-05-2013

 

Ветеран


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

Профиль | Отправить PM | Цитировать


Поменять ненужный здесь цикл по маскам на цикл по ресурсам:
Код: Выделить весь код
Option Explicit

Dim objFSO
Dim strPath

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

With objFSO
	For Each strPath In Array("\\server1\share1", "\\server1\share2", "\\server2\share3", "\\server2\share4")
		.MoveFile .BuildPath(strPath, "*.*"), "\\server2\Destination"
	Next
End With

Set objFSO = Nothing

WScript.Quit 0
Цитата Wsador:
Плюс есть сложность - в именах файла есть символы [ и ] »
Никакой сложности, это не PowerShell.

Отправлено: 00:01, 03-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

Профиль | Отправить PM | Цитировать


Странно, ошибка выходит:

то бишь там, где строчка Move..

Отправлено: 11:27, 03-05-2013 | #3


Ветеран


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

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
		.MoveFile .BuildPath(strPath, "*.*"), "\\server2\Destination\"
Боле подробный вариант:
Код: Выделить весь код
Option Explicit

Dim objFSO

Dim arrSources
Dim strDestination

Dim strPath

arrSources     = Array("\\server1\share1", "\\server1\share2", "\\server2\share3", "\\server2\share4")
strDestination = "\\server2\Destination"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

With objFSO
	For Each strPath In arrSources
		If .FolderExists(strPath) Then
			If .GetFolder(strPath).Files.Count > 0 Then
				.MoveFile .BuildPath(strPath, "*.*"), strDestination & "\"
			Else
				WScript.Echo "Folder [" & strPath & "] not contain any files"
			End If
		Else
			WScript.Echo "Folder [" & strPath & "] not found"
		End If
	Next
End With

Set objFSO = Nothing

WScript.Quit 0

Отправлено: 23:29, 03-05-2013 | #4


Новый участник


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

Профиль | Отправить PM | Цитировать


Вопрос 1.

А если файлы (папки) уже существуют , в "\\server2\Destination" ...
Они будут заменяться автоматически ???

Вопрос 2.

Как скопировать из 4-х папок, файлы удовлетворяющие атрибутам по дате создания ( например не старше 30 дней) ?.

Отправлено: 12:43, 06-05-2013 | #5


Ветеран


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

Профиль | Отправить PM | Цитировать


Цитата lipro122:
А если файлы (папки) уже существуют , в "\\server2\Destination" ...
Они будут заменяться автоматически ??? »
Нет, не будут. Возникнет ошибка времени исполнения в момент попытки перемещения файла.
Цитата:
If destination is an existing file, an error occurs.
Два встречных вопроса:
Цитата Wsador:
Возникла необходимость копирования текстовых файлов из 4 сетевых папок в одну. Я так понимаю для одной папки будет что-то типо такого:
Код: Выделить весь код
…
    .MoveFile .BuildPath("\\server1\share", strMask), "\\server2\Destination"
…
»
Я проглядел ранее этот момент. Так копирование или перемещение?

О каких папках — «если файлы (папки)» — идёт речь? Изначально говорилось только о текстовых файлах.

Цитата lipro122:
файлы удовлетворяющие атрибутам по дате создания ( например не старше 30 дней) ?. »
Менять логику скрипта, убирая работу по маскам (вот, кстати, тоже — не «*.*», а «*.txt») и перебирая файлы по одному, проверяя дату их создания и расширение. На мой взгляд, тут проще использовать PowerShell, с его расширенными возможностями по фильтрации.

Отправлено: 18:57, 06-05-2013 | #6


Новый участник


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

Профиль | Отправить PM | Цитировать


Цитата Iska:
Я проглядел ранее этот момент. Так копирование или перемещение?
О каких папках — «если файлы (папки)» — идёт речь? Изначально говорилось только о текстовых файлах. »
Необходимо перемещение. Речь идет о необходимости перемещать текстовые файлы. На powershell возникают проблемы из-за именования файлов - в именах содержатся символы [, ]. Использование LiteralPath что-то не помогает, вот и подумал о vbs. Про папки - ситуация такая: в четыре определённые папки на одном сервере происходит выгрузка результата в текстовом файле, из этих 4 папок необходимо все переместить в одну папку на другом сервере.

Отправлено: 07:50, 08-05-2013 | #7


Ветеран


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

Профиль | Отправить PM | Цитировать


С этим:
Цитата Iska:
Цитата lipro122:
А если файлы (папки) уже существуют , в "\\server2\Destination" ...
Они будут заменяться автоматически ??? »
Нет, не будут. Возникнет ошибка времени исполнения в момент попытки перемещения файла. »
что решили делать?

Отправлено: 18:42, 08-05-2013 | #8


Новый участник


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

Профиль | Отправить PM | Цитировать


Iska
Пока ничего. А какие могут быть варианты? В данном случае с одной стороны это может быть и хорошо, но желательно конечно чтобы имена файлов при перемещении переносились в лог на сетевом диске, чтобы было видно какие файлы перемещались. На powershell так и сделано, но там проблема с наименованием файлов с символами - он их просто не перемещает, если в файле нету символа - то все ок. Правда все файлы с символами.

Отправлено: 15:53, 09-05-2013 | #9


Новый участник


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

Профиль | Отправить PM | Цитировать


Цитата Iska:
Боле подробный вариант:
Код:
Option Explicit
Dim objFSO
Dim arrSources
Dim strDestination
Dim strPath
arrSources = Array("\\server1\share1", "\\server1\share2", "\\server2\share3", "\\server2\share4")
strDestination = "\\server2\Destination"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
With objFSO
For Each strPath In arrSources
If .FolderExists(strPath) Then
If .GetFolder(strPath).Files.Count > 0 Then
.MoveFile .BuildPath(strPath, "*.*"), strDestination & "\"
Else
WScript.Echo "Folder [" & strPath & "] not contain any files"
End If
Else
WScript.Echo "Folder [" & strPath & "] not found"
End If
Next
End With
Set objFSO = Nothing
WScript.Quit 0 »
Возник вопрос - при выполнении в ручную скрипта, он перемещает файл и выводит окно, если нажать ОК, то переходит к следующей папке и тд.Или просто выводит сообщение, что файлов в такой-то папке файлов нет и переходит к другой. Если поставить в диспетчер задач - то задача просто весит и не заканчивается. Как сделать так,чтобы не выводилось окно о перемещении файла?Этот скрипт должен выполнятся каждые 10 минут

Отправлено: 13:02, 16-05-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Скрипт для копирования из 4 сетевых папок в одну

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки avfiga Скриптовые языки администрирования Windows 71 07-01-2023 18:50
Любой язык - [решено] Скрипт для копирования файлов/папок с заменой darkAge Скриптовые языки администрирования Windows 19 01-07-2013 18:06
CMD/BAT - Скрипт копирования файлов и папок в сети в дерикторию пользователей DNKolian Скриптовые языки администрирования Windows 2 18-02-2013 10:52
CMD/BAT - [решено] Скрипт для копирования стуктуры AD из одного OU в другой Outlaw_UA Скриптовые языки администрирования Windows 2 21-06-2012 17:59
CMD/BAT - Скрипт для копирования папок по сети _bb_ Скриптовые языки администрирования Windows 4 02-03-2011 15:07




 
Переход