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

» Программирование "удобняшек" на VBScript (Часть 2)

Автор: Rush
Дата сообщения: 14.12.2012 20:28
Demon L
Первым делом замени

Код: NewFile.copy(TMP+NewFName)
Автор: Demon L
Дата сообщения: 14.12.2012 21:47
Rush

После этих изменений расширение файла есть, но формируемая ссылка теперь содержит путь до темп паки.
получается так:
Ftp://test.ru/C:\windows\TEMP\1Mh4QwqBm6.txt
Автор: Rush
Дата сообщения: 15.12.2012 12:40
Demon L

Цитата:
формируемая ссылка теперь содержит путь до темп паки.

Тогда так. Вместо

Код: NewFName = TMP & "\" & NewFName & "." & objFSO.GetExtensionName(objArgs(0))
NewFile.copy NewFName
Автор: Demon L
Дата сообщения: 15.12.2012 14:50
Rush
Спасибо. С именем и ссылкой все нормально теперь.

остались две проблемы:
1.
Код:
WSHShell.Run "cmd.exe /c"&WSHShell.ExpandEnvironmentStrings("%windir%") & _
"\system32\ftp.exe"" ENABLE& ftp -s:""" & TmpFile & """" & DosStr & ")""", 1, True
objFSO.DeleteFile TmpFile, True
objFSO.DeleteFile TMP+NewFName, True
Автор: Rush
Дата сообщения: 15.12.2012 16:07
Demon L
В этой команде

Код: WSHShell.Run "cmd.exe /c"&WSHShell.ExpandEnvironmentStrings("%windir%") & _
"\system32\ftp.exe"" ENABLE& ftp -s:""" & TmpFile & """" & DosStr & ")""", 1, True
Автор: Demon L
Дата сообщения: 15.12.2012 17:27

Rush

Спасибо огромное наконец то этот скрип заработал как положено, протестирую еще на разных компах, но пока все ок.
на данный момент появился, точнее выявился один не приятный момент:
скрипт отрабатывает замечательно - файл куда следует заливает, ссылку на него выдает но если скорость инета маленькая или фал большой по понятным причинам делается это долго.
И вот тут не понятно - заливается ли файл или вообще не чего не происходит...
Возможно ли вывести окошко с текстом скажем таким : "Подождите, файл загружается..." а как файл зальется автоматически закрыть это окно и скрип далее выдаст ссылку ?
Автор: Rush
Дата сообщения: 15.12.2012 18:34
Demon L

Цитата:
Возможно ли вывести окошко с текстом скажем таким : "Подождите, файл загружается..." а как файл зальется автоматически закрыть это окно

В vbs если и можно, то путем долгих извращений, но я их не помню, даже если когда-то и видел.
Автор: Demon L
Дата сообщения: 15.12.2012 18:48
А такой вариант возможен ?:
Этот скрипт выводит в конце работы окно что ссылка скопирована в буфер... так вот ровно такое же окошко вывести но паралельно с запуском CMD пока CMD запушен и это окно показывается как CMD закрывается и это закрывается. а само CMD можно сделать скрытым.

Код:
"\system32\ftp.exe"" ENABLE& ftp -s:""" & TmpFile & """" & DosStr & ")""", 0, True
Автор: Rush
Дата сообщения: 15.12.2012 20:27
Demon L
В том-то и дело, что простого нормального решения здесь нет. Решить, конечно, можно и эту проблему, но это надо или искать в инете уже готовое, или самому голову всю сломать - а я не готов к этому.
Автор: Demon L
Дата сообщения: 15.12.2012 20:46
Rush
ок.
Огромное спасибо за помощь.
Автор: Black_Lung
Дата сообщения: 26.12.2012 12:20
Для http запроса мне нужно временно отключить прокси, я попробовал так:


Код:
set xmlHTTP = CreateObject("MSXML2.ServerXMLHTTP")
xmlHTTP.setProxy 2,"",""
Автор: Rush
Дата сообщения: 27.12.2012 11:53
Black_Lung
Метод setProxy не поддерживается ServerXMLHTTP. Поддержка этого метода только с ServerXMLHTTP 6.0
Попробуй
Код: set xmlHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
Автор: anynamer
Дата сообщения: 07.01.2013 18:00
Помогите пожалуйста, со скриптом (VBS или BAT) который запускает wget в определённое время, качает поток iptv и в финале убивает процесс wget (закрывает программу wget) тем самым прекращая качать поток.

Пример cmd для скачки потока для wget
wget http://xxxxxxxxxx.xx/media/zzzzzzzzzzzzz -O stream.ts
Автор: zhitya
Дата сообщения: 14.01.2013 23:32
Добрый день!
Господа, есть вопрос по планировщику заданий в Windows Server 2003 R2.
Итак, есть планировщик, который по расписанию запускает сценарий VBScript:


Код:
'This script tends to reboot NPort device through telnet console.
'To schedule this script use Schedule Service module.
'Revision: 1 (07-09-2012)

<job>
<script language="VBScript">
Option Explicit
On Error Resume Next
Dim WshShell
set WshShell=CreateObject("WScript.Shell")
WshShell.run "cmd.exe"
WScript.Sleep 1000

'### Step 1 - Telnet to remote IP
'To choose specific port edit next string
'as 'WshShell.SendKeys "telnet 10.0.0.101 9999" (9999 - specific port number)
WshShell.SendKeys "telnet 10.0.0.101"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 500

'### Step 2 - Issue Commands with pauses'
WshShell.SendKeys "12345678"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 5000
WshShell.SendKeys "s"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 5000
WshShell.SendKeys "y"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 2000

'### Step 3 - Exit Command Window
WshShell.SendKeys "exit"
WshShell.SendKeys ("{Enter}")
WScript.Quit

</script>
</job>
Автор: disaboard
Дата сообщения: 18.01.2013 10:11
zhitya
Может последнюю паузу побольше сделать? Сеанс телнета еще висит и exit шлется в никуда
Руками процедуру надо воспроизвести и посмотреть по времени.
Автор: rosalin
Дата сообщения: 24.01.2013 23:15
Ребята попался отличный скрипт
отключает конкретного пользователя в домене , можно ли сделать что бы скрипт отключал пользователя не проявляющего активность указанное кол-во дней, например 90



Код: //////////////////////////////////////////////////////////
// Скрипт отключения пользователя //
// Язык: JScript //
// Автор: Андрей Мишечкин //
//////////////////////////////////////////////////////////
var objLDAPUser;
var objRootDSE = GetObject("LDAP://rootDSE");
var Args = WScript.Arguments; //Аргументы коммандной строки

////////////////////////////////////////////////////////////////
// Создание ADSI объектов пользователя //
////////////////////////////////////////////////////////////////
if(Args.length == 1) //Указано только имя пользователя
{
var LoginUserName = Args(0);
}
else //Неправильные аргументы коммандной строки
{
WScript.Echo("Usage: disable[.js] LoginUserName");
WScript.Quit()
}
////////////////////////////////////////////////////////
// Создание ADO-подключения //
////////////////////////////////////////////////////////
var objConnection = WScript.CreateObject("ADODB.Connection"); //объект ADO-соединения
var objCommand = WScript.CreateObject("ADODB.Command"); //объект запроса
objConnection.Provider = "ADsDSOObject";
objConnection.Open("Active Directory Provider");
objCommand.ActiveConnection = objConnection;
////////////////////////////////////////////////////////////////////////
// Выбор всех имен пользователей из AD c обработкой ошибок //
////////////////////////////////////////////////////////////////////////
try
{
objCommand.CommandText = "SELECT sAMAccountName,distinguishedName from 'LDAP://DC=local,DC=polad,DC=ru' Where objectClass='user' and objectClass<>'computer'";
var objADCRes = objCommand.Execute;
}
catch(e)
{
WScript.Echo("ADODB error. " + e.description);
WScript.Quit(1);
}
var IsUserFound = false; //Флаг "Пользователь найден/не найден"
objADCRes.MoveFirst; //Переход к первому элементу коллекции выборки учетных записей пользователей
while(!objADCRes.EOF) //Цикл перебора всех учетных записей пользователей
{
//Получение LDAP-объекта пользователя
//WScript.Echo(objADCRes.Fields("sAMAccountName").Value);
//WScript.Echo(objADCRes.Fields("distinguishedName").Value);
if(objADCRes.Fields("sAMAccountName").Value == LoginUserName)
{
objLDAPUser = GetObject("LDAP://" + objADCRes.Fields("distinguishedName").Value);
IsUserFound = true;
break;
}
else
objADCRes.MoveNext;
}
if(!IsUserFound)
{
WScript.Echo("No user found");
WScript.Quit();
}

/////////////////////////////////////////////////
// Отключение пользователя //
////////////////////////////////////////////////
var intUAC = objLDAPUser.Get("userAccountControl");
if(!(intUAC & 2))
{
objLDAPUser.Put("userAccountControl", intUAC | 2);
objLDAPUser.SetInfo();
WScript.Echo("User "+ LoginUserName +" is disabled");
Information(LoginUserName);
}
else
WScript.Echo("User " + LoginUserName + " is already disabled");
////////////////////////////////////////////////////////////////////////
// Перемещение отключенной учетной записи в OU=DisabledAccounts //
////////////////////////////////////////////////////////////////////////
var strDN = new String(objADCRes.Fields("distinguishedName").Value);
var reDisabledAccounts = new RegExp("DisabledAccounts","i");
var MatchResult = strDN.match(reDisabledAccounts);
//WScript.Echo(MatchResult);
if(!MatchResult)
{
objOU = GetObject("LDAP://OU=DisabledAccounts,OU=UsersOfPolad," + objRootDSE.Get("defaultNamingContext"));
objOU.MoveHere("LDAP://" + objADCRes.Fields("distinguishedName").Value, "CN="+LoginUserName);
WScript.Echo("User " + LoginUserName + " is moved to OU=DisabledAccounts");
}
else
WScript.Echo("User " + LoginUserName + " is already present in OU=DisabledAccounts");
function Information(UserName)
{
var WMIServiceObj = GetObject("Winmgmts:");
var ProcEnumerator = new Enumerator(WMIServiceObj.ExecQuery("Select Handle from Win32_Process WHERE Caption = 'cscript.exe' OR Caption = 'wscript.exe'"));
var ProcHandle = ProcEnumerator.item().Handle;
var objWMIProcess = GetObject("winmgmts:Win32_Process.Handle='" + ProcHandle + "'");
var wmiOutParams = objWMIProcess.ExecMethod_("GetOwner");
var AdministratorName = wmiOutParams.User;
var objCurrentDate = new Date;
var CurrentDate = objCurrentDate.getDate();
CurrentDate += "." + (objCurrentDate.getMonth()+1);
CurrentDate += "." + objCurrentDate.getYear() + " ";
var CurrentHour = objCurrentDate.getHours();
if(CurrentHour < 10)
CurrentDate += "0";
CurrentDate += CurrentHour + ":";
var CurrentMinute = objCurrentDate.getMinutes();
if(CurrentMinute < 10)
CurrentDate += "0";
CurrentDate += CurrentMinute;
var objEmail = WScript.CreateObject("CDO.Message");
objEmail.From = "\"Disable script\" script@polad.ru";
objEmail.To = admin1@polad.ru,admin2@polad.ru,admin3@polad.ru;
objEmail.Subject = UserName +" is disabled";
objEmail.Textbody = "User " + UserName + " is disabled by " + AdministratorName + " in " + CurrentDate;
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.polad.ru";
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25;
objEmail.Configuration.Fields.Update();
try
{
objEmail.Send();
}
catch(e)
{
WScript.Echo("Mail system error: " + e.description);
}
}


Автор: timurgall
Дата сообщения: 06.02.2013 13:13
Задача записать размер файла в текстовый фаил.

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Filedev = FSO.GetFile("h:\backup\workdb.dev")
fsize = Filedev.Size
Set Filetxt = FSO.OpenTextFile ("h:\backup\workdb.txt")
Filetxt.WriteLine Date & "->" & fsize & "bytes"
filetxt.close

Выходит ошибка в строке 5 символ 1 , Bad File Mod
Не могу понять где ошибка.
Автор: Rush
Дата сообщения: 06.02.2013 13:59
timurgall
При использовании метода OpenTextFile файл по умолчанию открывается For Reading. Также по умолчанию стоит флаг false аргумента Create.
Поэтому нужно так:

Код: Set Filetxt = FSO.OpenTextFile ("h:\backup\workdb.txt", 2, True)
Автор: timurgall
Дата сообщения: 06.02.2013 14:06
Rush
Спасибо, большое, все заработало.
Автор: karakurt2
Дата сообщения: 07.02.2013 07:15
Хочу создать скрипт, который будет менять время создания, изменения и последнего доступа к файлам в заданном каталоге и во всех вложенных каталогах. Как я понял, для эти целей нужно использовать объект Shell. Мне не понятно, как поменять, например, атрибут времени создания файла. Почему вот в этом коде

Код:
Call Touch("d:\eval", "ecluster2.lic", "01.12.2012")

Sub Touch(FolderPath, FileName, NewDate)
    Set app = WScript.CreateObject("Shell.Application")
    Set folder = app.NameSpace(FolderPath)
    Set file = folder.ParseName(FileName)
    file.ModifyDate = NewDate
    for each filename in folder.Items
        WScript.Echo filename & vbTab & folder.GetDetailsOf(filename, 4)
    next
    WScript.Echo folder.GetDetailsOf("ecluster2.lic", 4)
End Sub
Автор: Rush
Дата сообщения: 07.02.2013 10:54
karakurt2
Потому что метод GetDetailsOf работает с объектами, а не со строками.
Чтобы получить время, нужно аргументом выставить объект file, который ссылается на файл ecluster2.lic.

Код: WScript.Echo folder.GetDetailsOf(file, 4)
Автор: fire4x
Дата сообщения: 07.02.2013 21:31
Как из подпапки перейти в родительскую папку?
Автор: idlenlazy
Дата сообщения: 09.02.2013 09:41
fire4x

WshShell.CurrentDirectory = fso.GetParentFolderName (WshShell.CurrentDirectory)
Автор: freed
Дата сообщения: 09.02.2013 16:11
уроки для начинающих на youtube #
Автор: Dmitriy05
Дата сообщения: 10.02.2013 00:02
<перенесено в Excel VBA>
Автор: korggrodno
Дата сообщения: 11.02.2013 16:39
пользователь включает компьютер.
Затем логинится под user1
затем запускает TC от имени user2
И нужно както сделать, что бы у user2 всегда был подключен сетевой диск такойто
КАк это лучше всего огранизовать?

запуск тотала от имени user2 происходит таким скриптом

Цитата:

set WshShell = WScript.CreateObject("WScript.Shell")
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
TC_folder = fso.OpenTextFile("_TC_folder.ini", ForReading).ReadLine
WshShell.run "net use s: \\fserv\users_data$\sergey.h"
WshShell.run "psexec.exe -u ramteks\sergey.h.adm -p *** " + WshShell.CurrentDirectory +"\..\" + TC_folder + "\Totalcmd.exe"

либо таким скриптом


Цитата:

set WshShell = WScript.CreateObject("WScript.Shell")
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
TC_folder = fso.OpenTextFile("_TC_folder.ini", ForReading).ReadLine
rem /netonly Учетные данные предназначены только для удаленного доступа
rem /netonly Нужно убрать если доступ локальный
WshShell.run "runas /user:ramteks\sergey.h.adm ..\" + TC_folder + "\Totalcmd.exe"
rem увеличить 200 для случая если тотал не успевает открыться
WScript.Sleep 200
WshShell.SendKeys "***"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 200


Автор: Exilim
Дата сообщения: 15.02.2013 08:56
Товарищи! Помогите пожалуйста!

Суть проблемы:
Есть файл default.asp. В этом файле код VBScript. Я заливаю этот файл в каталог на сервере IIS. Открываю ссылку в браузере и у меня отображается список файлов в текущей директории. Но! Помимо всего прочего, отображается сам файл default.asp и web.config. Хотелось бы сделать так, чтобы в этом файле можно было явно указывать какие расширения файлов не отображать в списке (например не отображать файлы *.asp, *.config и пр.).

Код страницы:

Цитата:
<%@LANGUAGE="VBSCRIPT"%>
<%
Option Explicit
On Error Resume Next

' declare variables
Dim objFSO, objFolder
Dim objCollection, objItem

Dim strPhysicalPath, strTitle, strServerName
Dim strPath, strTemp
Dim strName, strFile, strExt
Dim intSizeB, intSizeK, intSizeM, intAttr, dtmDate

' declare constants
Const vbReadOnly = 1
Const vbHidden = 2
Const vbSystem = 4
Const vbVolume = 8
Const vbDirectory = 16
Const vbArchive = 32
Const vbAlias = 64
Const vbCompressed = 128

' don't cache the page
Response.AddHeader "Pragma", "No-Cache"
Response.CacheControl = "Private"

' get the current folder URL path
strTemp = Mid(Request.ServerVariables("URL"),2)
strPath = ""

Do While Instr(strTemp,"/")
strPath = strPath & Left(strTemp,Instr(strTemp,"/"))
strTemp = Mid(strTemp,Instr(strTemp,"/")+1)
Loop

strPath = "/" & strPath

' build the page title
strServerName = UCase(Request.ServerVariables("SERVER_NAME"))
strTitle = "Содержимое папки " & strPath & " "

' create the file system objects
strPhysicalPath = Server.MapPath(strPath)
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPhysicalPath)
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="GEN" content="files">
<title><%=strServerName%> - <%=strTitle%></title>

<style>
BODY { BACKGROUND: #FAFFEA; COLOR: #000000;
FONT-FAMILY: Arial; FONT-SIZE: 8pt; }
TABLE { BACKGROUND: #000000; COLOR: #ffffff; }
TH { BACKGROUND: #9F0; COLOR: #000; FONT-FAMILY: "Lucida Console", Monaco, monospace; FONT-SIZE: 9pt; }
TD { BACKGROUND: #ffffff; COLOR: #000000; FONT-FAMILY: "Lucida Console", Monaco, monospace; FONT-SIZE: 9pt; }
TT { FONT-FAMILY: Courier; FONT-SIZE: 8pt; }
</style>
<style type="text/css">
A {
text-decoration: none; /* Убирает подчеркивание для ссылок */
}
A:hover {
text-decoration: underline; /* Добавляем подчеркивание при наведении курсора на ссылку */
color: red; /* Ссылка красного цвета */
}
</style>
</head>
<body>

<h1 align="center"><%=strServerName%><br><%=strTitle%></h1>
<h4 align="center">Выберите файл/папку для загрузки/просмотра.</h4>

<div align="center"><center>
<table width="100%" border="1px" bordercolor="#D5D2BF" cellspacing="0" cellpadding="2">
<tr>
<th align="left">Имя</th>
<th align="left">Мегабайт</th>
<th align="left">Килобайт</th>
<th align="left">Ext</th>
<th align="left">Тип</th>
<th align="left">Дата</th>
<th align="left">Время</th>
</tr>

<%
''''''''''''''''''''''''''''''''''''''''
' output the folder list
''''''''''''''''''''''''''''''''''''''''

Set objCollection = objFolder.SubFolders

For Each objItem in objCollection
strName = objItem.Name
dtmDate = CDate(objItem.DateLastModified)
%>
<tr>
<td align="left"><b><a href="<%=strName%>"><%=strName%></a></b></td>
<td align="right">N/A</td>
<td align="right">N/A</td>
<td align="left"><b><DIR></b></td>
<td align="left"><b>Directory</b></td>
<td align="left"><%=FormatDateTime(dtmDate,vbShortDate)%></td>
<td align="left"><%=FormatDateTime(dtmDate,vbLongTime)%></td>
</tr>
<% Next %>

<%
''''''''''''''''''''''''''''''''''''''''
' output the file list
''''''''''''''''''''''''''''''''''''''''

Set objCollection = objFolder.Files

For Each objItem in objCollection
strName = objItem.Name
strFile = Server.HTMLEncode(Lcase(strName))

intSizeB = objItem.Size
intSizeK = Int((intSizeB/1024) + .5)
     intSizeM = Int((intSizeB/1024/1024) + .5)
If intSizeK = 0 Then intSizeK = 1

strName = Ucase(objItem.ShortName)
If Instr(strName,".") Then strExt = Right(strName,Len(strName)-Instr(strName,".")) Else strExt = ""
dtmDate = CDate(objItem.DateLastModified)
%>
<tr>
<td align="left"><a href="<%=strFile%>"><%=strFile%></a></td>
<td align="right"><%=intSizeM%> Mb</td>
<td align="right"><%=intSizeK%> Kb</td>
<td align="left"><%=strExt%></td>
<td align="left"><%=objItem.Type%></td>
<td align="left"><%=FormatDateTime(dtmDate,vbShortDate)%></td>
<td align="left"><%=FormatDateTime(dtmDate,vbLongTime)%></td>
</tr>
<% Next %>

</table>
</center></div>

</body>
</html>
<%
Set objFSO = Nothing
Set objFolder = Nothing

' this adds the IIf() function to VBScript
Function IIf(i,j,k)
If i Then IIf = j Else IIf = k
End Function

' this function creates a string from the file atttributes
Function MakeAttr(intAttr)
MakeAttr = MakeAttr & IIf(intAttr And vbArchive,"A","-")
MakeAttr = MakeAttr & IIf(intAttr And vbSystem,"S","-")
MakeAttr = MakeAttr & IIf(intAttr And vbHidden,"H","-")
MakeAttr = MakeAttr & IIf(intAttr And vbReadOnly,"R","-")
End Function
%>


сам файл Default.asp:
http://yadi.sk/d/w2y2aV622aoDI

как это выглядит сейчас:
http://s1.ipicture.ru/uploads/20130214/Q3PoFdgz.jpg
Автор: Exilim
Дата сообщения: 18.02.2013 17:23
Разобрался.. если кому нужно, то взять можно тут:
http://yadi.sk/d/0nhjCOxt2hQXY
Автор: fire4x
Дата сообщения: 01.03.2013 22:20
Нужен скрипт, который извлечет содержимое 123.zip в текущую папку, а потом этот архив удалит.

П.С. Если можно - с подробными комментариями - какая строка за что отвечает.
Автор: boss911
Дата сообщения: 06.03.2013 08:55
Удалено.

Страницы: 12345678910111213141516171819202122232425

Предыдущая тема: Помогите новичку в C++


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