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

» Программирование "удобняшек" на VBScript

Автор: probvs
Дата сообщения: 15.05.2009 13:24
Доброго времени суток!

есть cmdшник вот такого содержания:

@echo off
start /wait 1cv7s.exe [some param]
start taskkill /f /im userinit.exe /t
cls
exit

Который прописан "средой" у пользователей терминального сервера, он работает все отлично но есть одно но, при входе в терминальную сессию окно cmd появляется на весь экран.

Можно ли можно ли это сделать при помощи скрипта, если да, как?
Автор: Maza_Faka
Дата сообщения: 15.05.2009 13:47
probvs
Попробуйте так:

Код:
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run "1cv7s.exe -some -params", 1, True
objWshShell.Run "taskkill.exe /f /im userinit.exe /t", 0, True
Автор: ViSiToR
Дата сообщения: 15.05.2009 13:47
probvs 14:24 15-05-2009
Цитата:
можно ли это сделать при помощи скрипта



Код: Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "1cv7s.exe [some param]", 0, True
WshShell.Run "taskkill /f /im userinit.exe /t", 0, True
Автор: probvs
Дата сообщения: 15.05.2009 14:02
спасибо

Добавлено:
хм...
Ошибка (193) при создании пользовательского входа в систему.
Не удается запустить следующую начальную программу c:\1c.vbs




Добавлено:
или может кто знает как запустить cmd сразу минимизированным?
Автор: mihmig
Дата сообщения: 15.05.2009 21:52
probvs
в качестве стартовой программы указывайте на file.cmd, а строку типа:
C:\windows\system32\wscript.exe /ключи C:\1с.vbs
где 1с.vbs - указан выше.
Автор: Bozo
Дата сообщения: 16.05.2009 16:14
Помогите найти пару скриптов. Наверняка такие или подобные уже кем-то написаны. Приходится часто переключать разрешение экрана, хотелось бы повесить это на кнопку, bat- или cmd или wsh файл. Если разрешение 1600х1200х85Гц, то переключить в 1280х960х85Гц, и наоборот
И второй скрипт, переключение в Windows 7 между "Balanced" power Plan и "UserDefined" Power Plan, а то каждый вечер лазить в котрольную панель чтобы перечключиться на "ночной" режим, утомило уже.
Автор: mozers
Дата сообщения: 16.05.2009 22:36
Bozo

Код: nircmd.exe cmdshortcut "~$folder.desktop$" "1600х1200х85Гц" setdisplay 1600 1200 85
Автор: mihmig
Дата сообщения: 18.05.2009 17:30

Цитата:
переключение в Windows 7 между "Balanced" power Plan и "UserDefined"

встроенная команда powercfg
Автор: kapriz1996
Дата сообщения: 20.05.2009 08:55

Помогите, скриптологи!
Скриптом надо взять имя залогиневшегося пользователя с удаленного ПК. Использую стандартный скрипт:
strComputer = InputBox("Computer Name?")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colComputer = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")

For Each objComputer in colComputer
Wscript.Echo "Logged-on user: " & objComputer.UserName
Next

Все пользователи в домене работают под учеткой обычного юзера. Теперь вопрос:
С системы на XP имя берется на ура. С системы на w2k sp4 возвращает пустой результат,но если на ней залогиниться под админской учеткой, то все нормально.
Что-то с правами?
Излечимо ли такое?
Автор: megamozg13
Дата сообщения: 20.05.2009 08:58
kapriz1996
а не проще ли взять из переменных окружения?


Цитата:

Shell=WScript.CreateObject("WScript.Shell"); user=Shell.ExpandEnvironmentStrings("%USERNAME%");

Автор: kapriz1996
Дата сообщения: 20.05.2009 13:34
Прошу пардону, но я еще в скриптах чайник. Куда мне эти строки прописать в приведеном скрипте?
Автор: alexmdotru
Дата сообщения: 20.05.2009 15:29
Есть скрипт, который выдает список пользователей из локальной группы. Например:
19.5.2009;12:16:58;TS2;Administrators;Administrator
19.5.2009;12:16:58;TS2;Administrators;Domain Admins

Не могу найти у Domain Admins, свойство где было бы указано, что это Доменная группа.
Автор: vworld
Дата сообщения: 20.05.2009 16:37
подскажите как правильно запускать программу?
порядок запуска вот такой C:\Users\one\Documents\WikiTaxi\WikiTaxi.exe C:\Users\one\Documents\WikiTaxi\ruwiki\ru.taxi
я просто создал файл *.cmd с этим содержимым - запускается все нормально, НО еще и консоль висит фоном
Автор: alur2005
Дата сообщения: 20.05.2009 18:24
Помогите со скриптом , есть скрипт который удаляет файлы старше 7 дней, что в него еще
нужно дописать , что бы файлы созданные именно 1 , 8 , 15 , 22 , 29 чисел не удалялись,
а оставались в этой папке.


Цитата:


Dim FSO, WSH
Dim TheFolder, TheFiles, AFile
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder("C:\BACKUP\") 'Каталог, откуда удалять
Set TheFiles = TheFolder.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "DAT" and _
FormatDateTime(AFile.DateLastModified, 2) < FormatDateTime(Date - 7, 2) Then
AFile.Delete
End If
Next


Автор: mihmig
Дата сообщения: 20.05.2009 19:13
vworld
например так:
Set Shell=CreateObject("Wscript.Shell")
Call Shell.Run("C:\master\TC\TOTALCMD.EXE",1,False)
где 1- показать окно (в том случае если это консольный файл)
False - Не ждать завершения работы программы

And (Day(AFile.DateLastModified)<>1) _
And (Day(AFile.DateLastModified)<>8) _
и т.п.
Автор: Rush
Дата сообщения: 20.05.2009 19:37
alur2005

Цитата:
есть скрипт который удаляет файлы старше 7 дней

Тут у тебя есть два момента:
1) Скрипт твой удаляет файлы старше 30 дней
Код: FormatDateTime(Date - 30, 2)
Автор: alur2005
Дата сообщения: 20.05.2009 19:50
Rush

Спасибо , щас попробую



Цитата:
Он удаляет файлы измененные старше 30 дней назад


а если нужно не измененные , а созданные или скопированные ?

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

а что нужно поменять тут ?
Цитата:
FormatDateTime(AFile.DateLastModified, 2)



Автор: Rush
Дата сообщения: 20.05.2009 20:32
alur2005

Цитата:
а если нужно не измененные , а созданные или скопированные ?

AFile.DateCreated
Автор: alur2005
Дата сообщения: 20.05.2009 20:41
Rush

спасибо.
Автор: lapset
Дата сообщения: 22.05.2009 15:21
Добрый день!

Огромная просьба! Использую скрипт, который удаляет файлы в каталоге старше одного дня, но он не совсем подходит, нужно, что бы из всех файлов по маске Base*.rar удалялись все, кроме последнего.

Может есть у кого что-нибудь похожее?
Автор: Rush
Дата сообщения: 23.05.2009 06:19
lapset

Цитата:
нужно, что бы из всех файлов по маске Base*.rar удалялись все, кроме последнего.

Может есть у кого что-нибудь похожее?

Попробуем придумать.
Один нюанс - не совсем понятно, что подразумевается под последним. По дате создания, по имени?

По имени:

Код: set fso = createobject("scripting.filesystemobject")
set sha = createobject("shell.application")
set dir = sha.namespace("имя папки")
set arr = dir.items
arr.filter 192, "Base*.rar"
for i = 0 to arr.count - 2
fso.deletefile arr.item(i).path
next
Автор: tatuchipapa
Дата сообщения: 23.05.2009 11:48
Здравствуйте.
Неделю пытаюсь ребутнуть точку доступа Wi-Fi. (через телнет не получилось)

Вот что получилось после перепрочтения всей ветки:


Код: Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "iexplore.exe 192.168.0.103" , 1

WScript.Sleep 3000

WshShell.SendKeys "admin{tab}"

WshShell.SendKeys "root{tab}"

WshShell.SendKeys "{enter}"

WScript.Sleep 3000

WshShell.SendKeys "{tab 9} {enter}"

WshShell.SendKeys "{tab} {enter}"

WshShell.Run "taskkill /im iexplore.exe"
Автор: alur2005
Дата сообщения: 23.05.2009 14:47
Скрипт определяет последний созданный файл , что сюда дописать , что бы скрипт
определял по заданному расширению файлы ???


Цитата:


Dim oFolder

Set oFolder = CreateObject("scripting.filesystemobject").getfolder("C:\Backup")
For Each aFile In oFolder.Files
If sNewest = "" Then
Set fNewest = aFile
sNewest = AFile.Name
Else
If fNewest.DateCreated < aFile.DateCreated Then
Set fNewest = aFile
End If
End If
Next


Автор: mihmig
Дата сообщения: 23.05.2009 21:14
tatuchipapa

Цитата:
Неделю пытаюсь ребутнуть точку доступа Wi-Fi

Рекомендую использовать для этих целей wget
в зависимости от модели точки доступа будет что-то типа:
wget.exe http://192.168.0.1/reboot.html

(подсмотрите правильный URL при помощи локального прокси-сервера)
Автор: Rush
Дата сообщения: 23.05.2009 23:16
alur2005
Буквально двумя постами выше подобный скрипт я давал. Только немного изменить.

Код: set fso = createobject("scripting.filesystemobject")
set sha = createobject("shell.application")
set dir = sha.namespace("C:\Backup")
set arr = dir.items
arr.filter 192, "*.txt"
for i = 0 to arr.count - 1
if i = 0 then
set fnewest = fso.getfile(arr.item(i).path)
else
if fnewest.datecreated < fso.getfile(arr.item(i).path).datecreated then
set fnewest = fso.getfile(arr.item(i).path)
end if
end if
next
Автор: niichavo
Дата сообщения: 23.05.2009 23:44
alur2005

Цитата:
Скрипт определяет последний созданный файл , что сюда дописать , что бы скрипт
определял по заданному расширению файлы ???

Используем WMI:

Код: strComputer = "."
strExtension = "bak"
strDrive = "C:"
strPath = "\\Backup\\"

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set FileList = objWMIService.ExecQuery _
("Select * From CIM_DataFile Where Drive = '" & strDrive & _
"' AND Path = '" & strPath & "' AND Extension = '" & strExtension & "'")

For Each aFile In FileList    
If sNewest = "" Then
Set fNewest = aFile
sNewest = AFile.Name
Else
If fNewest.CreationDate < aFile.CreationDate Then
Set fNewest = aFile
End If
End If
Next
Автор: tatuchipapa
Дата сообщения: 23.05.2009 23:47
mihmig

Цитата:
Рекомендую использовать для этих целей wget

Спасибо читаю!
Проблему практически решил (не без помощи участников конференции),
Ребут точки это половина задачи. Ребут при зависании точки доступа ECB-3610-S(линк 9км).
Решение:

батник

Код: @echo off
:loop
ping ya.ru | find "TTL=" 1>nul 2>&1
if errorlevel 1 (
wscript.exe "rebt.vbs"
)
ping -n 61 localhost 1>nul 2>&1
goto :loop
Автор: Kardinalli
Дата сообщения: 24.05.2009 00:48
Подскажите, можно ли при помощи VBS закрыть апплет запущенный от rundll32.exe? То есть, убить только нужный экземпляр процесса rundll32? Интересуют варианты, основанные НЕ на чтении заголовка окна, а именно на конкретном апплете (в моем случае appwiz.cpl).
Автор: Rush
Дата сообщения: 24.05.2009 01:32
Сорри, не совсем то... DEL
Автор: mihmig
Дата сообщения: 24.05.2009 22:02
tatuchipapa
ха! ребут точки при зависании точки? а она при зависании даже на пинги не отвечает...
если только запитать ее от компа (5 вольт) и ребутить сам комп?

Kardinalli
Скорее всего нет, т.к. VBS все-таки для целей попроще. Попробуйте парсить вывод tasklist.exe до и после запуска rundll а потом taskkill необходимого pid
Или посмотрите в сторону WMI

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

Предыдущая тема: Работа в Delphi c CryptoApi


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