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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Нужна помощь в корекции скрипта для копирования файлов

Пользователь


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


Конфигурация

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


Добрый день уважаемые форумчане знатоки языка VBS . Ребята в общем проблема такая я только учусь писать скрипты и решил написать скрипт для поиска файлов по маске и копирования в созданную папку так вот проблема в том что он у меня ищет только если есть конкретный путь а если его нет то сразу "ошибка" Как сделать что бы он находил сам директорию на дисках без указания точного пути. Но самое важное если указать диск C:\*.txt то он ищет только на "C" а как сделать что бы он искал по всему диску "C" включая под каталоги ?

В общем то вопроса 2 :
1)Как мне указать относительный путь
2)И как сделать поиск по всему каталогу

Вот мой код скрипта :

set FSO=CreateObject("Scripting.FileSystemObject")
set file=fso.getfile(wscript.scriptfullname)
FSO.CreateFolder file.parentfolder+"\BACKUP"
FSO.CopyFile "C:\*.txt", file.parentfolder+"\BACKUP"
msgbox "Все комманды успешно выполнены"

Отправлено: 10:49, 27-09-2011

 

Ветеран


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

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


streamrider, в FSO нет средств для поиска по маске, только перебором. Вариант разбора и использования результатов «DIR <mask>» возможен, но может приводить к некорректным результатам — я его не рекомендую. То, что привели Вы («FSO.CopyFile "C:\*.txt"») — это не поиск, а отбор файлов.

Цитата streamrider:
Но самое важное если указать диск C:\*.txt то он ищет только на "C" а как сделать что бы он искал по всему диску "C" включая под каталоги ? »
Посредством FSO — никак. В принципе, есть разные варианты. Но желательно услышать конкретную задачу целиком, в виде: «мне нужно сделать то-то и то-то».
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:27, 27-09-2011 | #2



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

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


Пользователь


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

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


Iska, Мне нужно сделать скрипт что бы он искал нужный мне файл на диске "C" включая под каталоги и скопировал его мне в папку .

Задача в общем такая мне нужен скрипт который при запуске искал файл hosts в директории Windows и потом найдя его скопировал его мне в мою папку . Это все нужно мне для моей программы которая редактирует с нужными параметрами это файлик а поскольку прямой доступ не разрешен к папке system32 мне нужно его скопировать и потом прога получив доступ вносила изменения и снова заменяла его обратно . ПО готово а вот скрипт нет (((

Отправлено: 14:03, 27-09-2011 | #3


Ветеран


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

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


http://blogs.technet.com/b/heyscript...-computer.aspx

Только изменить WMI запрос,указав диск C: и имя файла.

("Select * From CIM_DataFile Where FileName = 'Budget' " & _
"AND Extension = 'txt' AND Drive = '" & strDrive & "'")


А для случая с hosts,можно запросить ключ реестра и определить папку - HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DatabasePath

Последний раз редактировалось Kazun, 27-09-2011 в 14:39.

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

Отправлено: 14:34, 27-09-2011 | #4


Ветеран


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

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


Kazun, только чертовски медленно будет искать.

streamrider, зачем его искать, если всегда известно, где он находится?
читать дальше »
Код: Выделить весь код
Option Explicit

Const SystemFolder = 1

Dim strPath


With WScript.CreateObject("Scripting.FileSystemObject")
	strPath = .BuildPath(.GetSpecialFolder(1).Path, "drivers\etc\hosts")
	
	If .FileExists(strPath) Then
		WScript.Echo "Found: " & strPath
	End If
End With

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

Отправлено: 14:58, 27-09-2011 | #5


Старожил


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

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


В дополнение. Копировать лучше методом CopyHere. Поскольку у FSO будут проблемы с файлами read only. Пример:
Код: Выделить весь код
Option Explicit

Dim strMyFolderPath
Dim objShell
Dim objMyFolder
Dim objHostsFolder

strMyFolderPath = "z:\myfolder"

Set objShell = CreateObject("Shell.Application")

Set objMyFolder = objShell.NameSpace(strMyFolderPath)
Set objHostsFolder = objShell.NameSpace(objShell.NameSpace(&H25).ParseName("drivers\etc"))

' Копирование:
    ' из системной в свою
objMyFolder.CopyHere objHostsFolder.Self.Path & "\hosts", 20
    ' из своей в системную
objHostsFolder.CopyHere objMyFolder.Self.Path & "\hosts", 20
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:01, 27-09-2011 | #6


Пользователь


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

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


Спасибо огромное за помощь и за код для поиска )))) Осталось теперь поколдовать чтол бы этот код совместить с копированием по пути полученному этой функцией от Iska,

SendMessage, И вам огромное спасибо это как раз то что нужно )))))))))

Отправлено: 16:18, 27-09-2011 | #7


Ветеран


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

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


Цитата SendMessage:
Копировать лучше методом CopyHere. Поскольку у FSO будут проблемы с файлами read only. »
Поясните, пожалуйста.


streamrider, я тут посмотрел… Да, обязательно надо читать реестр и искать файл по указанному пути:
Цитата Kazun:
А для случая с hosts,можно запросить ключ реестра и определить папку - HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DatabasePath »
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:46, 27-09-2011 | #8


Старожил


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

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


Iska, если файл назначения имеет установленный атрибут «read only», метод objFSO.CopyFile (а также и objFSO.GetFile(filename).Copy) не сможет заменить этот файл, даже если параметр OverWrite выставлен True (что, впрочем, и есть по умолчанию).
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:18, 27-09-2011 | #9


Пользователь


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

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


SendMessage, А как описать strMyFolderPath = "z:\myfolder" что бы копирование шло в ту директорию где лежит сам скрипт ??? Я делал так :

strMyFolderPath = "parentfolder"

В ответ ошибка

Отправлено: 19:16, 27-09-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Delphi - [решено] нужна помощь с функцией копирования директорий camope3 Программирование и базы данных 7 12-07-2011 22:20
CMD/BAT - [решено] Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок Nun-Nun Скриптовые языки администрирования Windows 6 14-05-2009 15:45
Нужна снова ваша помощь в написании интересного скрипта Magnus Вебмастеру 2 09-06-2005 20:26
Нужна помощь в написании скрипта Magnus Вебмастеру 7 06-05-2005 10:53
Нужна помощь в подборе скрипта и в дизайне Guest Вебмастеру 3 18-10-2003 11:05




 
Переход