Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript

Модерирует : ShIvADeSt

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

   

AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webern
Посмотри здесь или тут.

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 05:48 16-02-2011
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webern
Не знаю, как в семерке, а в ХР можно получить размер и тип через GetDetailsOf. Вернее, тип получить нельзя - он формально берется из расширения (а вдруг исправили в новой ос?). А размер можно.
Можно через WIA, его дополнительно устанавливать не надо, присутствует при установке. Тут я набросал пример:

Код:
var BMP = '{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}';
var PNG = '{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}';
var GIF = '{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}';
var JPG = '{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}';
var TIF = '{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}';
 
var imgFormat;
var fName = 'c:\image.jpg';
 
var img = new ActiveXObject('WIA.ImageFile');
img.LoadFile(fName);
 
WScript.Echo('Width = ' + img.width);
WScript.Echo('Height = ' + img.height);
 
switch(img.FormatID) {
  case BMP:
    imgFormat = 'BMP';
    break;
  case PNG:
    imgFormat = 'PNG';
    break;
  case GIF:
    imgFormat = 'GIF';
    break;
  case JPG:
    imgFormat = 'JPEG';
    break;
  case TIF:
    imgFormat = 'TIFF';
}    
WScript.Echo('Format = ' + imgFormat);

http://msdn.microsoft.com/en-us/library/ms630827(v=VS.85).aspx
 
Я его сильно не ковырял. Может там и интересней методы можно найти, не знаю.

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 09:58 16-02-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush

Цитата:
Можно через WIA, его дополнительно устанавливать не надо, присутствует при установке.

Не всегда. У нас в отделе WinXP SP3 на 5 машинах (ставили админы с головной конторы), ни на одной нет . Доставлял вручную.

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 10:27 16-02-2011
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri

Цитата:
Не всегда.  

Так у человека семерка - там точно должна быть.
На всякий случай - ссылка на скачку.

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 10:35 16-02-2011
JohnSilver182



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
route print  + ipconfig

Цитата:
Список интерфейсов
 82...........................CFI
 81...........................USI
 


Цитата:
Адаптер PPP CFI:
 
   DNS-суффикс подключения . . . . . :
   IPv4-адрес. . . . . . . . . . . . : 192.168.0.240
   Маска подсети . . . . . . . . . . : 255.255.255.255
   Основной шлюз. . . . . . . . . :

Вот я  хочу у VPN   с именем CFI  
1)  узнать ID
2) IP адресс сервера и IP адрес клиента
Было бы круто если код работал WinXp \ Win7

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 11:22 16-02-2011 | Исправлено: JohnSilver182, 11:28 16-02-2011
webern

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
Rush
Большое спасибо за ценные наводки, сам точно не додумался бы до таких трюков.
А в сторону WIA я даже не догадался посмотреть - отключено это всё у меня.
Буду пробовать.

Всего записей: 1022 | Зарегистр. 04-11-2004 | Отправлено: 17:55 16-02-2011
Ki1me

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а как сделать так, чтобы нужный файл, копировался в папку и её подпапки ?

Всего записей: 4 | Зарегистр. 17-02-2011 | Отправлено: 13:10 17-02-2011
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ki1me

Цитата:
 а как сделать так, чтобы нужный файл, копировался в папку и её подпапки ?

Что, один и тот же файл во все папки? Тогда так:

Код:
Option Explicit
 
Dim objFSO
Dim strFilePath
Dim strFolderPath
 
strFilePath = "z:\file.txt"
strFolderPath = "z:\folder"
 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
 
CopyFileToFolders objFSO.GetFolder(strFolderPath)
 
Sub CopyFileToFolders(objFolder)
  Dim SubFolderItem
    objFSO.CopyFile strFilePath, objFolder.Path & "\"
    For Each SubFolderItem In objFolder.SubFolders
      objFSO.CopyFile strFilePath, SubFolderItem.Path & "\"
      CopyFileToFolders SubFolderItem
    Next
End Sub

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 14:20 17-02-2011
Ki1me

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо,  

Всего записей: 4 | Зарегистр. 17-02-2011 | Отправлено: 14:57 17-02-2011
Ki1me

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а как сделать что бы пустые папки удаляло только с определенного подуровня ? например C:\obmen\IT\Ivanov  или C:\obmen\IT

Всего записей: 4 | Зарегистр. 17-02-2011 | Отправлено: 13:11 18-02-2011
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ki1me
Так начинай рекурсию с уровня нужной папки и все подпапки удаляй и все. Самое простое - использовать не wsh, а cmd. Писать меньше.

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 13:24 18-02-2011
Ki1me

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как в этом скрипте сделать что б писало сколько папок удалил ?
Dim oFSO, oFolder, oSubFolders
 
Const strRootFolder = "\\10.0.0.12\обмен\"
 
Set oFSO = CreateObject("Scripting.FileSystemObject")
 
 
If oFSO.FolderExists(strRootFolder) Then
  Set oFolder = oFSO.GetFolder(strRootFolder)
Else
  WScript.Echo "Incorrect root folder path"
  Set oFSO = Nothing
  WScript.Quit(1)
End If
 
 
Call RemoveEmptyFolders(oFolder)
 
Set oFolder = Nothing
Set oFSO = Nothing
 
 
sub RemoveEmptyFolders(byref oRootFolder)
  Dim oFolder, oSubFolders
  Set oSubFolders = oRootFolder.SubFolders
   
  for each oFolder in oSubFolders
        RemoveEmptyFolders(oFolder)
        If oFolder.Size = 0 Then
          Call oFSO.DeleteFolder(oFolder.Path, True)
        End If
  next  
 
  Set oSubFolders = nothing
  Set oFolder = Nothing
end sub

Всего записей: 4 | Зарегистр. 17-02-2011 | Отправлено: 14:18 18-02-2011
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ki1me

Цитата:
как в этом скрипте сделать что б писало сколько папок удалил ?  


Код:
Dim oFSO, oFolder, oSubFolders, ni  
 
Const strRootFolder = "\\10.0.0.12\обмен\"  
ni = 0
 
Set oFSO = CreateObject("Scripting.FileSystemObject")  
 
If oFSO.FolderExists(strRootFolder) Then  
  Set oFolder = oFSO.GetFolder(strRootFolder)  
Else  
  WScript.Echo "Incorrect root folder path"  
  Set oFSO = Nothing  
  WScript.Quit(1)  
End If  
 
Call RemoveEmptyFolders(oFolder)
 
MsgBox "Удалено папок - " & CStr(ni)  
 
Set oFolder = Nothing  
Set oFSO = Nothing  
 
Sub RemoveEmptyFolders(byref oRootFolder)  
  Dim oFolder, oSubFolders
  Set oSubFolders = oRootFolder.SubFolders  
   
  For Each oFolder In oSubFolders          
    If oFolder.Size = 0 Then
       SummEF(oFolder.SubFolders)
       ni = ni + 1 + oFolder.SubFolders.Count
       Call oFSO.DeleteFolder(oFolder.Path, True)
    Else
       RemoveEmptyFolders(oFolder)  
    End If      
  Next    
 
  Set oSubFolders = nothing  
  Set oFolder = Nothing  
End Sub
 
Sub SummEF(fname)
  Dim fItem
    For Each fItem In fname
      ni = ni + fItem.SubFolders.Count
      SummEF(fItem.SubFolders)
    Next
End Sub

 
Добавлено:
Много не тестировал - поэтому уверенности в точности подсчетов нет. Проверяй.

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 15:12 18-02-2011
cambit

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мастера, помогите! Есть вот такой скрипт:

Код:
Dim objWS, iRetMsg
Set objWS = CreateObject("WScript.Shell")
Set objShell = CreateObject("WScript.Shell")  
Set WshShell = CreateObject("WScript.Shell")
objShell.Run "C:\Windows\Declar\Mesg.exe", 0, False  
 
iRetMsg = objWS.Popup("З Б І Р", 10, " . . В І Д Т В О Р Ю Є Т Ь С Я . . ",vbRetryCancel Or vbInformation)
Select Case iRetMsg
    Case -1: Call Ex
    Case vbRetry: WScript.Echo "Выбран -",vbRetry
    Case vbCancel: WshShell.Run "taskkill /IM sndrec32.exe", 0
End Select
 
 
Sub Ex
end sub  

 
Программа Mesg.exe всего навсего запускает проигрыватель sndrec32.exe на воспроизведеие файла Msg.wav. По идее, после начала воспроизведения, если нажать "Отмена" процесс sndrec32.exe должен завершится, но этого не происходит. Почему?
 
 
Добавлено:
Тут я заметил, что процесс sndrec32.exe закрывается после 2-х команд taskkill (сделал отдельный скрипт для эксперимента и запускаю вручную. Что за ерунда?

Всего записей: 601 | Зарегистр. 09-06-2008 | Отправлено: 18:07 18-02-2011 | Исправлено: cambit, 18:28 18-02-2011
Leon_Ko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, плииз, как на wsh реализовать удаление файлов определённого расширения, с заходом во вложенные подкаталоги (рекурсия?). Т.е. при запуске скрипта из каталога, должны быть обработаны все нижеследующие подкаталоги. Здесь, похоже, приводились подобные примеры, но я, к сожалению, в wsh как "свинья в апельсинах" .

Всего записей: 1024 | Зарегистр. 26-11-2008 | Отправлено: 11:10 20-02-2011
dandyd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может быть кто сталкивался с проблемой:
Пытаюсь послать данные на порт удаленного компа
порт открывается, читать оттуда можно (GetData)
а на SendData выдает ошибку - Объект не поддерживает это свойство или метод: 'tcpClient.SendData'
FireWall отключен
 
фрагмент кода
 
Set tcpClient=WScript.CreateObject("MSWinsock.Winsock")
WScript.ConnectObject tcpClient,"tcpClient_"
tcpClient.Protocol = sckTCPProtocol
tcpClient.RemoteHost = "192.168.1.1"
tcpClient.RemotePort = 9005
tcpClient.Connect
 
start_time = second(Now)
Do While (tcpClient.State <> sckConnected) or (second(Now) >= start_time+3)
  WScript.Echo "open port..."
  WScript.Sleep 500
Loop
 
if not bConnected Then
  WScript.Echo "timeout"
  WScript.Quit
Else
  tcpClient.SendData("li:2:10000016:")
 end If
 
test_port.vbs(18, 3) Ошибка выполнения Microsoft VBScript: Объект не поддерживает это свойство или метод: 'tcpClient.SendData'

Всего записей: 171 | Зарегистр. 22-01-2006 | Отправлено: 13:51 20-02-2011
Scaramanga



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток.
Имеется такой скрипт смены сетевых настроекЖ

Код:
strComputer = "."
strIP = Array("192.168.1.2")
strMask = Array("255.255.255.0")
strGateway = Array("192.168.1.1")
strDNS = Array("192.168.1.2","192.168.1.3")
 
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colCON = objWMI.ExecQuery("Select * " & _
                            " From Win32_NetworkAdapterConfiguration " & _
                            " Where IPENabled=TRUE")  
For Each objCON In colCON
  objCON.EnableStatic strIP,strMask
  objCON.SetGateways strGateway
  objCON.SetDNSServerSearchOrder strDNS
 
  Exit For
Next

как сделать чтобы он еще и изменял wins сервер?

Всего записей: 516 | Зарегистр. 24-04-2008 | Отправлено: 20:26 20-02-2011
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Scaramanga

Цитата:
как сделать чтобы он еще и изменял wins сервер?

Так примерно:

Код:
strIP_1 = "192.168.1.2"
strIP_2 = "192.168.1.3"
objCON.SetWINSServer strIP_1, strIP_2

 
Добавлено:
Leon_Ko

Цитата:
как на wsh реализовать удаление файлов определённого расширения, с заходом во вложенные подкаталоги (рекурсия?). Т.е. при запуске скрипта из каталога, должны быть обработаны все нижеследующие подкаталоги.


Код:
Option Explicit
 
On Error Resume Next
 
Dim objFSO
Dim objShApp
Dim strMask
Dim strFolderPath
Dim check: check = False
 
strFolderPath = "z:\folder"
strMask = "*.bak"
 
 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objShApp = WScript.CreateObject("Shell.Application")
 
DelFileToFolders objFSO.GetFolder(strFolderPath)
 
If Err.Number Then
  MsgBox "Скрипт отработал с ошибками.", 48, "Удаление файлов"
ElseIf check Then
  MsgBox "Файлы " & strMask & " удалены успешно.", 64, "Удаление файлов"
Else
  MsgBox "Файлы " & strMask & " не обнаружены.", 64, "Удаление файлов"
End If
 
Sub DelFileToFolders(objFolder)
  Dim SubFolderItem
    If FilesExist(objFolder.Path) Then
      objFSO.DeleteFile objFolder.Path & "\" & strMask, True
      check = True
    End If
    For Each SubFolderItem In objFolder.SubFolders
      If FilesExist(SubFolderItem.Path) Then
        objFSO.DeleteFile SubFolderItem.Path & "\" & strMask, True
        check = True
      End If
      DelFileToFolders SubFolderItem
    Next
End Sub
 
Function FilesExist(strPath)
  Dim arrFiles    
    Set arrFiles = objShApp.NameSpace(strPath).Items
    arrFiles.Filter 64, strMask
    FilesExist = CBool(arrFiles.Count)
End Function

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 02:25 21-02-2011
Leon_Ko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush
Спасибо! Но для меня это действительно... Сильно!
Точнее, непосильно

Всего записей: 1024 | Зарегистр. 26-11-2008 | Отправлено: 07:58 21-02-2011
Leon_Ko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Правда, появились некоторые вопросы .
Во-первых, как сделать так, что не было жёсткой привязки к букве диска и папке? В оригинале указанно "z:\folder", а если диск (буква) другой и папка, соответственно, тоже. Т.е. хотелось бы иметь полную универсальность: запускаем в корне "z:\" - получаем обработку всего диска (раздела), запускаем в "z:\folder" - получаем обработку в папках, соответственно, нижее. Это можно?
Во-вторых, не очень понятно с сообщением "Скрипт отработал с ошибками." Т.е. логика-то понятна, а вот работа...  
Поясню конкретной ситуацией - на примере. Имеем раздел с папкой "z:\folder", где в подкаталогах ("z:\folder\1", "z:\folder\2", "z:\folder\2\1" и т.п.) имеются необходимые к удалению файлы *.bak. Меняем в скрипте strFolderPath = "z:\folder" на strFolderPath = "z:\" , т.е. запускаем удаление с корня раздела.
Выдаётся сообщение "Скрипт отработал с ошибками." что в общем-то логично.
Но файлы-то *.bak в каталогах "z:\folder\1", "z:\folder\2" удаляются! Что как-то не очень понятно .

Всего записей: 1024 | Зарегистр. 26-11-2008 | Отправлено: 11:14 21-02-2011
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript
ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru