Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматизация администрирования. Часть 2

Автор: Scaramanga
Дата сообщения: 18.01.2011 17:22
Всем привет.
На sysadmin взял скрипт для подключения к сетевым дискам следующего содержания

Код: 'Скрипт подключения сетевого диска с определенной меткой.
'ВНИМАНИЕ!!!
'Скрипт не будет работать, если буква подключаемого диска совпадает с буквой локального диска.
'****************************************************************************
Option Explicit

Dim objFSO
Dim strDriveLetter, strRemotePath, strNewDiskName

strDriveLetter = "Z:"
strRemotePath = "\\
strNewDiskName = "Free"

On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Если такой сетевой диск существует, отключаем его и переподключаем по новой.
'На тот случай, если был подключен не тот диск. Затем переименовываем.
'Если диск не существует, подключаем и переименовываем.
If objFSO.DriveExists(strDriveLetter) = True Then
RemNetDrive strDriveLetter, True, True
MapNetDrive strDriveLetter, strRemotePath, False
RenameNetDrive strDriveLetter, strNewDiskName
Else
MapNetDrive strDriveLetter, strRemotePath, False
RenameNetDrive strDriveLetter, strNewDiskName
End If


'****************************************************************************
'ПРОЦЕДУРЫ
'****************************************************************************

'Процедура переименования сетевого диска.
'Принимаемые параметры:
'strDriveLetter - буква диска + двоеточие, например "P:"
'strNewDiskName - новая метка диска, например "Документы бухгалтерии"
Sub RenameNetDrive (strDriveLetter, strNewDiskName)
Dim objShell
Set objShell = CreateObject("Shell.Application")

objShell.NameSpace(strDriveLetter).Self.Name = strNewDiskName
End Sub

'Процедура подключения сетевого диска.
'Принимаемые параметры:
'strDriveLetter - буква диска + двоеточие, например "P:"
'strRemotePath - путь к общему ресурсу, монтируемому, как диск, например "\\Fileserver01\Buh"
'bUpdateProfile - сохранять ли информацию в профиле пользователя. Аналог ключа /PERSISTENT:YES команды net use.
Sub MapNetDrive (strDriveLetter, strRemotePath, bUpdateProfile)
Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")

objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, bUpdateProfile
End Sub

'Процедура удаления сетевого диска.
'Принимаемые параметры:
'strDriveLetter - буква диска + двоеточие, например "P:"
'bForce - отключать ли диск, если он в данный момент используется
'bUpdateProfile - сохранять ли информацию в профиле пользователя.
Sub RemNetDrive (strDriveLetter, bForce, bUpdateProfile)
Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")

objNetwork.RemoveNetworkDrive strDriveLetter, bForce, bUpdateProfile
End Sub
Автор: kakaw
Дата сообщения: 20.01.2011 13:14
Есть сетевая папка. Требуется, чтобы при поступлении новых файлов в эту папку, определённый пользователь получал уведомление. Подскажите пожалуйста чем можно реализовать подобное ?
Автор: YNY
Дата сообщения: 20.01.2011 13:51
kakaw> при поступлении новых файлов...
смотри темы/ключевые слова: "настройка аудита", "подписка на события", "чтение эвентлога"
Автор: firsteducation
Дата сообщения: 25.01.2011 19:01
Приветствую всех. Есть задача по переименованию файла, имя файла известно, нужно его переименовать, но расположение файла на жёстком диске может быть разным, да файлов этих может быть несколько, в общем если этих файлов несколько, то нужно переименовать все. Кто нибудь подскажет?

Добавлено:
Желательно конечно в виде батника.
Автор: Rush
Дата сообщения: 26.01.2011 12:34
firsteducation

Цитата:
Есть задача по переименованию файла, имя файла известно, нужно его переименовать, но расположение файла на жёстком диске может быть разным, да файлов этих может быть несколько, в общем если этих файлов несколько, то нужно переименовать все.


Код: @echo off

set "Drive=Z:\"
set "OldName=read.txt"
set "NewName=write.txt"

for /f "tokens=*" %%i in ('dir "%Drive%%OldName%" /a-d/s/b') do ren "%%i" "%NewName%"
Автор: YNY
Дата сообщения: 26.01.2011 14:33
firsteducation> задача по переименованию файла... c разным местоположением
Плюшка к варианту от Rush (без тестирования работоспособности):
Файл Cmd.exe разворачивает переменные с %0 по %9. При использовании пакетных параметров переменная %0 заменяется на имя пакетного файла, а переменные с %1 по %9 — на соответствующие аргументы, напечатанные в командной строке.
Т.о. вместо %OldName% мона использовать %1, а вместо %NewName% -- %2, тогда вызов батника будет типа: S.bat OldName NewName

Автор: firsteducation
Дата сообщения: 26.01.2011 14:42
Rush спасибо проверим!
YNY спс, занесу всё в свой архив, есчё пригодится!

Автор: champa
Дата сообщения: 27.01.2011 09:29
Добрый день!
Подскажите, пожалуйста, по следующему вопросу:
имеется мед. программа (Полиус), в которую каждый день надо подгружать через ВЭБ-интерфейс базы застрахованных лиц от 3-4 компаний. Базы приходят по почте, причем шифруются Вербой. Реально ли все это автоматизировать?
Что нужно, могу уточнить. Больше интересует вопрос по расшифровке Вербой.
Автор: res2001
Дата сообщения: 27.01.2011 09:48
champa
У вербы есть пакетный режим работы, написав простенький сценарий можно все автоматизировать.
В мануале по вербе есть описание команд и способа запуска.
Одно напрягает - при первом запуске все равно приходится руками инициализировать ДСЧ.
Так же есть и консольные утилиты, но тут я не очень в курсе, использую пакетный режим.
Автор: champa
Дата сообщения: 27.01.2011 10:41
res2001
спасибо. Посмотрим. Теоритически задача, как я понял, выполнима и не составит особого труда?
Автор: res2001
Дата сообщения: 27.01.2011 10:54
champa

Цитата:
Теоритически задача, как я понял, выполнима и не составит особого труда?

и теоретически и практически
Автор: champa
Дата сообщения: 27.01.2011 12:57
res2001
пошел читать матчасть! давно скриптов не делал - со времен диплома универа=)) но ниче вспоминать легче, чем изучать заново. Вопросик сразу: почту получаю Батом, может для удобства лучше специально для скрипта консольное че-нить, типа blat'a?

Добавлено:
хотя, вспоминая, диплом - именно Мышь и использовалась.
Автор: res2001
Дата сообщения: 27.01.2011 13:20
champa
В бате есть такая фишка как ipc файл - это текстовый файл, в котором содержаться команды для бата. Файл должен лежать в каталоге с батом, называться thebat.ipc. BAT сканирует свой каталог на предмет наличия этого файла и выполняет команды, которые в нем содержаться.
Так что можно и с батом все автоматизировать.
Автор: firsteducation
Дата сообщения: 28.01.2011 18:28
Люди есть проблема, сделал пакетный файл, в нём два батника и один wsh скриптик, один батник добавляет в реестр запись на запуск wsh скрипта, wsh скрипт должен запустить второй батник, лежащий в той же папке, но wsh выдаёт ошибку что файл ненайден.
Если запускать wsh скрипт вручную всё работает, в чём дело?
Пример моего wsh скрипта:

On Error Resume Next
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "test.bat", 0, false
Автор: Alukardd
Дата сообщения: 28.01.2011 20:01
firsteducation
ИМХО...
Потому что когда вы запускаете скрипт ручками то находитесь в той же папке, и он считается, что отсюда и вызван, а когда он вызывается из реестра (вы кстати не сказали откуда именно, и при каких обстоятельствах, и вообще зачем такая канитель?) то вызов считается из какой-нить %systemroot%\system32, ну а там файлика-то вашего и нету...
Как вариант решения проблемы либо использовать абсолютные пути, либо 1-ый батник пусть копирует wsh, и 2-ой батник куда-нить на %systemdrive% и пути уже пишите от этой переменной...
Автор: firsteducation
Дата сообщения: 29.01.2011 03:19
Люди есть проблема, сделал пакетный файл, в нём два батника и один wsh скриптик, один батник добавляет в реестр запись на запуск wsh скрипта, wsh скрипт должен запустить второй батник, лежащий в той же папке, но wsh выдаёт ошибку что файл ненайден.
Если запускать wsh скрипт вручную всё работает, в чём дело?
Пример моего wsh скрипта:

On Error Resume Next
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "test.bat", 0, false


Цитата:
ИМХО...
Потому что когда вы запускаете скрипт ручками то находитесь в той же папке, и он считается, что отсюда и вызван, а когда он вызывается из реестра (вы кстати не сказали откуда именно, и при каких обстоятельствах, и вообще зачем такая канитель?) то вызов считается из какой-нить %systemroot%\system32, ну а там файлика-то вашего и нету...
Как вариант решения проблемы либо использовать абсолютные пути, либо 1-ый батник пусть копирует wsh, и 2-ой батник куда-нить на %systemdrive% и пути уже пишите от этой переменной...


Мне нужно чтоб папка в которой лежит wsh скрипт была папкой из которой он был вызван, т.к иначе ничего не срабатывает.
Автор: attaattaatta
Дата сообщения: 29.01.2011 08:53

Цитата:
On Error Resume Next
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "test.bat", 0, false



Цитата:
Dim LaunchDir, FSO, WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir = WSHShell.CurrentDirectory

WSHShell.Run ""LaunchDir & "\test.bat""

Автор: firsteducation
Дата сообщения: 29.01.2011 12:55
attaattaatta А можно поподробней?


Добавлено:

Цитата:
Dim LaunchDir, FSO, WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir = WSHShell.CurrentDirectory

WSHShell.Run ""LaunchDir & "\test.bat""


Выдаёт ошибку: предполагается наличие окончания инструкции.
Автор: YNY
Дата сообщения: 30.01.2011 10:31
firsteducation> Выдаёт ошибку: предполагается наличие окончания инструкции
Т.к. не правильное использование двойных кавычек!
Правильно типа вот так:
WSHShell.Run LaunchDir & "\test.bat"
или если в LaunchDir есть пробелы, то
WSHShell.Run """"&LaunchDir&"\test.bat"&""""


Добавлено:
ДЛЯ ВСЕХ
VBSCRIP5.CHM -- справка по VBScript из ворда XP (и возмона 2k) до 2007
C:\Program Files\Microsoft Office\Office10\1049\VBSCRIP5.CHM
Автор: firsteducation
Дата сообщения: 30.01.2011 11:55
О наконец то, спасибо YNY!


Добавлено:
Рано я обрадовался, при добавлении в реестр vbs скрипта, пишется ошибка не найден файл!
Автор: firsteducation
Дата сообщения: 31.01.2011 04:27
Рано я обрадовался, при добавлении в реестр vbs скрипта, пишется ошибка не найден файл! В чём дело?
Автор: YNY
Дата сообщения: 31.01.2011 07:30
firsteducation> ошибка не найден файл
проверь какой путь у тебя в реестре, затем скопируй строку запуска из реестра, нажми Пуск\Выполнить, вставив путь из реестра, и жми ОК/энтнр. Если не запустится, то значит:
1--путь запуска не корректен)
2-- нет прав на папку
Автор: firsteducation
Дата сообщения: 31.01.2011 15:13
Дело в том что сценарий vbs система находит, но указывает 4 строку и 1-й символ, после чего пишет: не удаётся найти указанный файл.

Добавлено:
YNY

Цитата:
проверь какой путь у тебя в реестре, затем скопируй строку запуска из реестра, нажми Пуск\Выполнить, вставив путь из реестра, и жми ОК/энтнр

Всё сделал как ты посоветовал, когда вбиваю в cmd через "выполнить", всё запускается, но через реестр не фурычит!

Добавлено:
Вот содержимое моего vbs скрипта:

Dim LaunchDir, FSO, WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir = WSHShell.CurrentDirectory
WSHShell.Run LaunchDir & "\test.bat"
Автор: YNY
Дата сообщения: 31.01.2011 17:16
firsteducation> но через рез реестр не фурычит
текст первого батника покажи
Автор: vlary
Дата сообщения: 31.01.2011 17:32
firsteducation Надеюсь, в реестре прописываешь скрипт так как тебе уже раньше советовали?

Цитата:
vbs надо запускать так: cscript C:\blablabla\script.vbs

Автор: firsteducation
Дата сообщения: 31.01.2011 19:08
имя батника: test.bat
тело батника:
@echo work!
pause

имя vbs: tester.vbs
тело vbs:
Dim LaunchDir, FSO, WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
LaunchDir = WSHShell.CurrentDirectory
WSHShell.Run LaunchDir & "\test.bat"

строка в реестре:
C:\WINDOWS\asdsa\tester.vbs

все файлы лежат в C:\WINDOWS\asdsa
Автор: Alukardd
Дата сообщения: 31.01.2011 19:26
firsteducation
Цитата:
Всё сделал как ты посоветовал, когда вбиваю в cmd через "выполнить", всё запускается, но через реестр не фурычит!
эм... ну для чистоты проверки вы суньте в vbs строки типа MSgBox "Текст сообщения", vbInformation, "Заголовок сообщения"
Тем самым вы элементарно проверите вызывается ли сам vbs из реестра...
Автор: el_verdugo
Дата сообщения: 01.02.2011 01:52
firsteducation
Попробуйте сделать явный вызов сервера wscript или cscript, прописав что-то вроде этого:
C:\WINDOWS\System32\wscript.exe C:\WINDOWS\asdsa\tester.vbs
Автор: YNY
Дата сообщения: 01.02.2011 10:01
firsteducation
в какую ветку реестра ты ставишь запуск ???
Автор: vlary
Дата сообщения: 01.02.2011 10:15
el_verdugo Запуск консольных приложений рекомендуется делать именно через cscript.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

Предыдущая тема: BackUp Win2003Serer


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.