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

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

Автор: XMMS
Дата сообщения: 14.12.2010 14:24
Rush
Огромное вам спасибо! То что нужно.
Автор: Demon L
Дата сообщения: 14.12.2010 23:47
Народ помогите, пожалуйста, решить задачку...
Есть папка (D:\TEST) в нее падают файлики *.tiff
Требуется каждый попавший туда файлик отправить по Email вложением. А сам файл после этого переместить в другую папку, например D:\OUT
Как сие сделать помогите…
Автор: AndVGri
Дата сообщения: 15.12.2010 04:41
Demon L
Получение списка файлов в папке Test и выборка *.tiff

Код:
Dim pShell, pFolder, pItems

Set pShell = CreateObject("Shell.Application")
Set pFolder = pShell.NameSpace("d:\test")
Set pItems = pFolder.Items
pItems.filter 64, "*.tiff"
Автор: Demon L
Дата сообщения: 15.12.2010 10:43
AndVGri

Спасибо!
Только не пойму а куда тут вписывать даные через что отправлять (smtp логин пароль) ?

И пишет:
Недопустимое значение конфигурации "SendUsing"
код: 80040220
Источник: CDO.Message.1

Тоесть не работает.
Автор: quakerock
Дата сообщения: 15.12.2010 11:46
Rush

Text = ReplaceText(Mid(Text, 3), "\r\n.{2}", VbCrLf)
Text = ReplaceText(Text, "([^\r])\n*", "$1")
Text = ReplaceText(Text, "\r*([^\n])", "$1")

Разжуй, если не сложно, что это? (интересует то что в скобках)
Автор: Rush
Дата сообщения: 15.12.2010 12:50
quakerock

Цитата:
Разжуй, если не сложно, что это? (интересует то что в скобках)

Замена с использованием регулярных выражений.
1) перевод строки (\r - символ возврата каретки, \n - символ перевода строки) и после него любых 2 символа (.{2}) заменяются на перевод строки (VbCrLf - константа vbs). Итог - удаляются первые два символа в каждой строке.
2) [^\r] - любой символ кроме символа возврата каретки (поскольку находится в круглых скобках, то этот символ сохраняется во временном буфере) и идущие за ним один и более символов перевода строки (\n+) заменяются на сохраненный в буфере символ из шаблона ($1). В итоге удаляются юниксовые символы перевода строк (\n), не находящиеся в виндовой связке \r\n.
3) То же самое, что и предыдущий пример, но только операция происходит маковскими переводами строк (\r), не находящимися в виндовой связке \r\n.

Блин, только сейчас заметил ошибку в коде. Надо было написать

Код: Text = ReplaceText(Text, "([^\r])\n+", "$1")
Text = ReplaceText(Text, "\r+([^\n])", "$1")
Автор: quakerock
Дата сообщения: 15.12.2010 13:42
Спасибо.
Автор: AndVGri
Дата сообщения: 15.12.2010 14:59
Demon L

Цитата:
CDO.Message
посмотри его методы и свойства (в частности для SendUsing на msdn). У меня настроен Outlook Express, так он использует его настройки smtp по умолчанию, то есть у меня отправляет.
Автор: Demon L
Дата сообщения: 15.12.2010 22:48
AndVGri
Понял. но так не пойдет.
На машине где это нужно делать нет не каких почтовых клиентов...
Других вариантов нет ?
Автор: quakerock
Дата сообщения: 16.12.2010 08:09
Demon L

blat.exe ?
Автор: abz
Дата сообщения: 17.12.2010 22:28
Как, с помощью vbs скрипта отправить компьютер в ЖДУЩИЙ (не путать со спящим!) режим? Помогите, плиз.
Автор: bomzzz
Дата сообщения: 18.12.2010 04:23
abz
вот это ты спросил. в вбс скриптах не силен. может через вми можно
ты вот это хотел? я непользовался никогда, спящий режим отключен, просто не знаю что такое ждущий. но вроде то самое

SetSuspendState.exe 2,50 КБ (2 560 байт) - ждущий режим, система отправляет запрос на приостановку каждому приложению, отключено восстановление активного состоаяния по событию пробуждения

Добавлено:
http://msdn.microsoft.com/en-us/library/aa373206%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/aa373201%28v=vs.85%29.aspx
у меня пользователь один может надо было привелегии добавить - у меня работает

погуглил вроде через вми низя, и через вбс тожи
http://forum.ru-board.com/topic.cgi?forum=62&topic=14769
тут посматри через рундл32 как то делают
тут пишут

Цитата:

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

а уменя оно отключено. может у тебя не сработать что ли. к сожалению не пользовался этими режимами никогда, не могу понять что делаю.


Добавлено:

Цитата:

Параметры

state
Тип: System.Windows.Forms.PowerState
Объект PowerState, указывающий режим питания, в который следует перейти.

force
Тип: System.Boolean
Значение true, чтобы немедленно перейти в режим приостановки работы; значен��е false, чтобы система Windows отправила запрос на приостановку работы каждому приложению.

disableWakeEvent
Тип: System.Boolean
Значение true, чтобы отключить восстановление активного состояния питания системы, если произойдет событие пробуждения, значение false, чтобы включить восстановление активного состояния питания системы, если произойдет событие пробуждения.

http://msdn.microsoft.com/ru-ru/library/system.windows.forms.application.setsuspendstate.aspx

Добавлено:
http://msdn.microsoft.com/ru-ru/library/system.windows.forms.powerstate.aspx

Цитата:

Suspend     Указывает режим питания системы в приостановленном состоянии. Когда система находится в приостановленном состоянии, компьютер переходит в состояние с низким потреблением энергии, называемое "ждущий режим". В ждущем режиме компьютер расходует меньше энергии, поскольку некоторые устройства отключены. Система может восстановиться более быстро, чем при возращении из спящего режима. Поскольку при переходе в ждущий режим не выполняется сохранение состояния памяти на диск, сбой энергопитания в период, когда компьютер находится в ждущем режиме, может привести к потере данных.
    Hibernate     Указывает режим питания системы в спящем режиме. Когда система переходит в спящий режим, содержимое памяти сохраняется на диск перед выключением компьютера. При перезапуске системы восстанавливается рабочий стол и программы, которые выполнялись до перезапуска.
Автор: abz
Дата сообщения: 18.12.2010 18:26
bomzzz

Цитата:
SetSuspendState.exe 2,50 КБ (2 560 байт)

Эта утилита отправляет в спящий (hibernate) режим.

Добавлено:

Цитата:
Suspend Указывает режим питания системы в приостановленном состоянии. Когда система находится в приостановленном состоянии, компьютер переходит в состояние с низким потреблением энергии, называемое "ждущий режим".

Спасибо. Я знаю, что такое ждущий режим.
Автор: bomzzz
Дата сообщения: 18.12.2010 18:35
ты не понял. у меня гибернайт отключен, в какой она у меня режим отправляет я не знаю - я его никогдане видел. вроде пишет ждущий. если тебя режим не устраивает, скажи какой тебе нужен исходя из описания апи функции я перекомпилирую

Добавлено:
я поставил 1 0 1, скажи какой тебе набор надо я переделаю.

Добавлено:
если хочешь можешь сам переделать, вроде на вбс срипте и вми такое не получится. может я не нашел.
если не хватит привелегий раскоментируй строчки

этот код сохраняешь в файл current.asm

Цитата:

.386
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
;include \masm32\include\ntdll.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
;includelib \masm32\lib\ntdll.lib

.data
LibName db "Powrprof.dll",0
FunctionName db "SetSuspendState",0

.data?
hModule dd ?

.code

start:
; invoke RtlAdjustPrivilege,13h,1h,0h,esp

invoke LoadLibrary, addr LibName
mov hModule, eax
invoke GetProcAddress, hModule, addr FunctionName
push 1
push 0
push 1
call eax
invoke FreeLibrary, hModule


invoke ExitProcess, EAX
end start


рядом мутишь вот такой батник для компиляции

Цитата:

ECHO OFF
COLOR 9F
CLS
C:\masm32\bin\ml.exe /c /coff current.asm
C:\masm32\bin\link.exe /subsystem:windows current.obj
pause

качаешь отсюда масм, устанавливаеться просто, в реестр не гадит.
MASM32 Downloads

запускаешь батник получаешь исполянемый файл

вопросы тут
http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=7682&start=940#lt

Добавлено:
на масме эта библиотека тоже не используется, нужно к нейнапрямую обращаться

Добавлено:
setsuspendmode переводить как устнаовить ждущий режим.

Добавлено:
может из за того что у меня отключен спящий отправило в ждущий. хз
Автор: ComradG
Дата сообщения: 19.12.2010 21:49

Цитата:
вроде на вбс срипте и вми такое не получится

не вроде, а не получится. я вдоль и поперек все избороздил, решая данную задачку, но относительно гибернации ничего так и не получилось накарябать ((
Автор: AndVGri
Дата сообщения: 20.12.2010 07:57
Demon L
Можно и дальше (читай, матчасть по-немногу)

Код:
Dim pSend
Dim pConf
Set pSend = CreateObject("CDO.Message")
Set pConf = CreateObject("CDO.Configuration")
'... заполнение полей pConf читай здесь
http://msdn.microsoft.com/en-us/library/ms526318(EXCHG.10).aspx
Set pSend.Configuration = pConf
'.... параметры для pSend: заголовок, куда, откуда, вложение
pSend.Send
Автор: Demon L
Дата сообщения: 20.12.2010 17:44
quakerock
Спасибо.

AndVGri
Не понял чего
Цитата:
Можно и дальше

я ведь уже говорил.твой метод не подходит.

В любом случае всем спасибо... проблема решена.
Автор: magiogre
Дата сообщения: 22.12.2010 12:54
Доброго времени суток!
Нужно простенькое решение простенькой задачки.
Необходимо написать скрипт, который будет копировать с заменой всё содержимое папки folder1 в папку folder2.
Спасибо заранее.
Автор: Rush
Дата сообщения: 22.12.2010 13:23
magiogre

Код: Option Explicit

Dim fso
Dim SourceFolder
Dim DestinationFolder

SourceFolder = "x:\folder1"
DestinationFolder = "x:\folder2"

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

fso.CopyFolder SourceFolder, DestinationFolder
Автор: magiogre
Дата сообщения: 22.12.2010 15:41
Rush

Задачка в следующем.

Имеется сервер с ОС Windows2008 R2 и сетевое хранилище NAS.
Нужно бэкапить сетевую папку с винды на NAS. Штатными средствами Windows не удалось подружиться с сетевым хранилищем.
CMD тоже не удобно, т.к. нужно подключать и отключать NAS.


Нужен скрипт. Вот что в данный момент у нас получилось:

Option Explicit

Dim net
Set net = CreateObject("Wscript.Network")
net.MapNetworkDrive "L:","\\192.168.1.120\share", "true", "user", "password"

Dim fso
Dim SourceFolder
Dim DestinationFolder

SourceFolder = "D:\Test\Folder"
DestinationFolder = "L:\Test\Folder"

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

fso.CopyFolder SourceFolder, DestinationFolder

net.RemoveNetworkDrive "L:","true", "true"


Нужно, наверное, перед началом копирования, как-то убрать атрибут read only со всего содержимого L:\Test\Folder.
Автор: AndVGri
Дата сообщения: 23.12.2010 02:21
magiogre
Снимай
Dim pFolder
Set pFolder = fso.GetFolder(DestinationFolder)
pFolder.Attributes = pFolder.Attributes And &HFFFFFE
fso.CopyFolder SourceFolder, DestinationFolder, True
Автор: magiogre
Дата сообщения: 23.12.2010 09:34

Код: Option Explicit

Dim net
Dim fso
Dim SourceFolder
Dim DestinationFolder
Dim pFolder

Set net = CreateObject("Wscript.Network")
net.MapNetworkDrive "L:","\\192.168.1.120\backup-win", "true", "user", "password"

SourceFolder = "D:\Test\Folder"
DestinationFolder = "L:\Test\Folder"

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set pFolder = fso.GetFolder(DestinationFolder)
pFolder.Attributes = pFolder.Attributes And &HFFFFFE
fso.CopyFolder SourceFolder, DestinationFolder, True

net.RemoveNetworkDrive "L:","true", "true"
Автор: AndVGri
Дата сообщения: 23.12.2010 10:18
magiogre
Обойди рекурсией папку DestinationFolder

Код:
Sub RemoveHSR(ByVal forFolder)
    Dim pFile, pFolder
    
    If forFolder.Files.Count > 0 Then
        For Each pFile In forFolder.Files
            pFile.Attributes = pFile.Attributes And &HFFF8
        Next
    End If
    
    If forFolder.SubFolders.Count > 0 Then
        For Each pFolder In forFolder.SubFolders
            pFolder.Attributes = pFolder.Attributes And &HFFF8
            RemoveHSR pFolder
        Next
    End If
End Sub
Автор: MedvedevDM
Дата сообщения: 23.12.2010 11:31
Добрый день всем!
Необходимо на vbs написать скрипт подключения копма к сетевым дискам,
W:
Z:
чтобы потом подключать их при загрузке компа.
Еще надо указать логин/пароль для подключения диска


Подскажите пример скрипта.
Автор: magiogre
Дата сообщения: 23.12.2010 13:14
MedvedevDM


Option Explicit
Dim net
Set net = CreateObject("Wscript.Network")
net.MapNetworkDrive "X:","\\address\", "true", "user", "password"


Автор: quakerock
Дата сообщения: 23.12.2010 13:39
Подскажите\покажите...

>Есть папка (Folder) в которую, в течении всего дня сваливается почта.
>Надо сделать так, что бы раз в 30сек, Folder проверялась на наличие новой почты и выходило сообщение с названиями свежей корреспонденции.

-Отчего отсчитывать эти 30сек не понимаю.
-Пытался от DateCreated, но там формат дата-время, если бы просто дата, то я бы сделал, но тут...
-Может не от DateCreated надо отталкиваться?

-Подскажите, покажите, что надобно сделать.
Автор: magiogre
Дата сообщения: 23.12.2010 13:51
AndVGri
опять на копирование ругается, если есть read only файл(ы)


Код: Option Explicit

Dim net, fso, SourceFolder, DestinationFolder, pFile, pFolder


Set net = CreateObject("Wscript.Network")
net.MapNetworkDrive "L:","\\192.168.1.120\backup-win", "true", "user", "password"

SourceFolder = "D:\Test\Folder"
DestinationFolder = "L:\Test\Folder"

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set pFolder = fso.GetFolder(DestinationFolder)


Sub RemoveHSR(ByVal forFolder)

If forFolder.Files.Count > 0 Then
For Each pFile In forFolder.Files
pFile.Attributes = pFile.Attributes And &HFFF8
Next
End If

If forFolder.SubFolders.Count > 0 Then
For Each pFolder In forFolder.SubFolders
pFolder.Attributes = pFolder.Attributes And &HFFF8
RemoveHSR pFolder
Next
End If
End Sub


fso.CopyFolder SourceFolder, DestinationFolder, True

net.RemoveNetworkDrive "L:","true", "true"
Автор: ComradG
Дата сообщения: 23.12.2010 15:48
magiogre
дядь, а предварительную проверку замутить на "редонли" файлы с последующим их XOR'ом на архивный не судьба?
Автор: AndVGri
Дата сообщения: 24.12.2010 01:43
ComradG

Цитата:
не судьба

Я конечно понимаю, что magiogre начинающий, но вставить только код процедуры без её вызова на выполнение... Как то даже...
Автор: bomzzz
Дата сообщения: 24.12.2010 10:03
abz
погуглил - у многих этот спящий режим вообще не работает на хп.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

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


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