|
v7: WSH: FileSystemObject.CopyFile копировать с родительскими каталогами? | ☑ | ||
---|---|---|---|---|
0
pvase
09.07.12
✎
13:17
|
Надо скопировать файл с одной папки в другую с сохранением структуры каталогов. Можно ли как то сделать такое не обрбатывая каждый родительский каталог и не создавая поочередно родительские каталоги? каталоги
|
|||
1
izekia
09.07.12
✎
13:18
|
xcopy
|
|||
2
Vladal
09.07.12
✎
13:18
|
Именно в WSH? в Windows XP появилась команда xcopy.
|
|||
3
pvase
09.07.12
✎
13:19
|
Спасибо, хотелось бы без показа окна cmd.
|
|||
4
Vladal
09.07.12
✎
13:21
|
CopyFolder(<Source>,<Destination>,<Overwrite>)
Назначение: рекурсивно копирует каталог. Параметры: <Source> - строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы "*" и "?". <Destination> - строка, путь назначения (куда копировать). <Overwrite> - необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию - True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра). Описание: процесс копирования прерывается после первой возникшей ошибки. Пример: Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFolder "C:\NewFolder\*", "C:\TEMP\", 0 |
|||
5
Vladal
09.07.12
✎
13:22
|
Ссылку забыл.
http://www.script-coding.com/WSH/FileSystemObject.html |
|||
6
pvase
09.07.12
✎
13:26
|
(4) Спасибо, но мне надо только один файл (не все файлы) из каталога.
|
|||
7
FN
09.07.12
✎
13:30
|
(4) тогда WScript.Shell + Run(xcopy)
|
|||
8
pvase
09.07.12
✎
13:55
|
Спасибо за xcopy, не могу только понять как ответить на вопрос при копировании
Что означает D:\1Cv77\SQL\SystemData\BACKUP\Общие\Формы\defcls.prm: имя файла или каталога (F = файл, D = каталог)? что это файл, чтобы окно при копировании не появлялось. Подскажите пожалуйста. |
|||
9
izekia
09.07.12
✎
13:57
|
"что это файл, чтобы окно при копировании не появлялось. Подскажите пожалуйста."
Боюсь ничего не смогу подсказать)) |
|||
10
FN
09.07.12
✎
14:10
|
>чтобы окно при копировании не появлялось
Синтаксис: Run(<Command>,<WindowStyle>,<WaitOnReturn>) Назначение: создаёт новый независимый процесс, который запускает заданное приложение. Параметры: <Command> - строка, командная строка запуска приложения. <WindowStyle> - необязательный, число. Определяет вид окна запускаемого приложения. Некоторые возможные значения: 0 - Не отображает окно. 1 - Активизирует и отображает окно. 2 - Активизирует окно и отображает его в свёрнутом виде. 3 - Активизирует окно и отображает его в максимизированном виде. <WaitOnReturn> - необязательный, булево (число). True - сценарий возобновит работу только после завершения вызванного процесса. False (по умолчанию) - управление передаётся сразу обратно в сценарий. Описание: если параметр "WaitOnReturn" установлен в True, метод возвращает код выхода вызванного приложения. Иначе метод всегда возвращает ноль. Пример: Set WshShell = CreateObject("WScript.Shell") WshShell.Run "explorer /e,/root,""C:\Program Files""" Другой пример: Set WshShell = CreateObject("WScript.Shell") RetCode = WshShell.Run("notepad", 1, True) MsgBox "Обработка завершена! Код возврата - " & RetCode |
|||
11
Vladal
09.07.12
✎
15:50
|
(8) Что означает D:\1Cv77\SQL\SystemData\BACKUP\Общие\Формы\defcls.prm:
имя файла или каталога (F = файл, D = каталог)? Он спрашивает - в приёмнике нет такого файла/папки. Что ты хочешь сощздать - (Ф)файл или (Д)директорию. Если создашь файл, то в него будут записаны (дописаны в один) все файлы из источника |
|||
12
Vladal
09.07.12
✎
15:53
|
(8) как ответить на вопрос при копировании - можно задать в переменной окружения ответы на вопросы или параметром
XCOPY источник [целевой_объект] [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/EXCLUDE:файл1[+файл2][+файл3]...] источник Копируемые файлы. целевой_объект Расположение или имена новых файлов. /A Копирование только файлов с установленным архивным атрибутом; сам атрибут при этом не изменяется. /M Копирование только файлов с установленным архивным атрибутом; после копирования атрибут снимается. /D:m-d-y Копирование файлов, измененных не ранее указанной даты. Если дата не указана, заменяются только конечные файлы, более старые, чем исходные. /EXCLUDE:файл1[+файл2][+файл3]... Список файлов, содержащих строки. Каждая строка должна располагаться в отдельной строке. Если какая-либо из строк совпадает с любой частью абсолютного пути к копируемому файлу, такой файл исключается из операции копирования. Например, указав строку \obj\ или .obj, можно исключить все файлы из папки obj или все файлы с расширением OBJ соответственно. /P Вывод запросов перед созданием каждого нового файла. /S Копирование только непустых каталогов с подкаталогами. /E Копирование каталогов с подкаталогами, включая пустые. Эквивалентен сочетанию ключей /S /E. Совместим с ключом /T. /V Проверка размера каждого нового файла. /W Вывод запроса на нажатие клавиши перед копированием. /C Продолжение копирования вне зависимости от наличия ошибок. /I Если целевой объект не существует и копируется несколько файлов, считается, что целевой объект задает каталог. /Q Запрет вывода имен копируемых файлов. /F Вывод полных имен исходных и целевых файлов. /L Вывод имен копируемых файлов. /G Копирование зашифрованных файлов в целевой каталог, не поддерживающий шифрование. /H Копирование, среди прочих, скрытых и системных файлов. /R Перезапись файлов, предназначенных только для чтения. /T Создание структуры каталогов без копирования файлов. Пустые каталоги и подкаталоги не включаются в процесс копирования. Для создания пустых каталогов и подкаталогов используйте сочетание ключей /T /E. /U Копирование только файлов, уже имеющихся в целевом каталоге. /K Копирование атрибутов. При использовании команды XСOPY обычно сбрасываются атрибуты "Только для чтения". /N Использование коротких имен при копировании. /O Копирование сведений о владельце и данных ACL. /X Копирование параметров аудита файлов (подразумевает ключ /O). /Y Подавление запроса подтверждения на перезапись существующего целевого файла. /-Y Запрос подтверждения на перезапись существующего целевого файла. /Z Копирование сетевых файлов с возобновлением. /B Копирование символической ссылки вместо ее целевого объекта. /J Копирование с использованием небуферизованного ввода/вывода. Рекомендуется для очень больших файлов. |
|||
13
Vladal
09.07.12
✎
16:06
|
Добавь ключи: /E /I /G /H /R /Y /Z
а если надо копировать только обновлённые - то еще /D |
|||
14
pvase
09.07.12
✎
17:47
|
(13) Не помогло, все равно не выдает сообщение.
|
|||
15
pvase
09.07.12
✎
23:08
|
(14) Т.е. выдает запрос на что создается.
|
|||
16
Злопчинский
10.07.12
✎
00:42
|
(2) xcope была еще в досе
|
|||
17
pvase
10.07.12
✎
14:24
|
Пришлось самому написать:
Функция РазобратьКаталог(Каталог) СписВозв = СоздатьОбъект("СписокЗначений"); _Каталог = СокрЛП(Каталог); _КаталогОбр = _Каталог; КешКаталог = ""; Пока 1 = 1 Цикл ПозСлеша = Найти(_КаталогОбр,"\"); Если ПозСлеша = 0 Тогда Прервать; КонецЕсли; ТекКаталог = Лев(_КаталогОбр,ПозСлеша); КешКаталог = КешКаталог + ТекКаталог; СписВозв.ДобавитьЗначение(КешКаталог); _КаталогОбр = Прав(_КаталогОбр,СтрДлина(_КаталогОбр)-ПозСлеша) КонецЦикла; Возврат(СписВозв); КонецФункции // =============================== Процедура ПроверитьКаталог(Каталог); СписКаталог = РазобратьКаталог(Каталог); Спис = СоздатьОбъект("СписокЗначений"); Спис = РазобратьКаталог(НачКаталог); ВыбЗн = ""; Для Нсп = 1 По Спис.РазмерСписка() Цикл ТекКаталог = Спис.ПолучитьЗначение(Нсп); ЕстьКаталог = FSO.FolderExists(ТекКаталог); Если ЕстьКаталог <= 0 Тогда FSO.CreateFolder(ТекКаталог); КонецЕсли; КонецЦикла; КонецПроцедуры // =============================== Функция КопироватьФайл(Откуда,Куда,ФлПерезапись) ПроверитьКаталог(Куда); FSO.CopyFile(Откуда,Куда,ФлПерезапись) КонецФункции где "FSO" - переменная: FSO = CreateObject("Scripting.FileSystemObject"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |