Batya

|
Posted: Mon Jul 27, 2009 18:42 Post subject: |
|
|
_D_V_S_ wrote: | Как подобное организовать в WSH? | Вообщем, на vbs примерно так: Code: | '===================================================================================
' Выбор рабочей папки
'
' Входные параметры:
' 1 - файл со списком рабочих папок;
' 2 - обрабатываемая папка;
' 3 и далее - выполняемая программа и её параметры.
'===================================================================================
Option Explicit
Dim Mess, FSO, WSH, FolderList, ProcFolder, Command, Folders, Text, i, UseFolder, M, F
Dim Choice
SetMess
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
CheckParams
Text = FSO.OpenTextFile(FolderList, 1, False).ReadAll
Folders = Split(Text, vbNewLine)
UseFolder = ""
i = 0
For Each F In Folders
If F <> "" Then
i = i + 1
F = GetPath(F)
If Not FSO.FolderExists(F) Then UseFolder = F
M = M & vbNewLine & CStr(i) & " - " & F
End If
Next
If UseFolder <> "" And Not FSO.FolderExists(ProcFolder) Then
MsgBox Mess(6) & UseFolder, vbCritical + vbOKOnly, Mess(0)
Quit
End If
'If UseFolder = "" And FSO.FolderExists(ProcFolder) Then
' MsgBox Mess(8), vbCritical + vbOKOnly, Mess(0)
' Quit
'End If
M = Mid(M, Len(vbNewLine) + 1)
Do
Choice = InputBox(Mess(7) & vbNewLine & vbNewLine & M, Mess(0))
If Choice = "" Then Quit 0
If Not IsNumeric(Choice) Then
Choice = ""
Else
Choice = CInt(Choice)
If Choice < 1 Or Choice > i Then Choice = ""
End If
If Choice = "" Then MsgBox Mess(8), vbExclamation + vbOKOnly, Mess(0)
Loop While Choice = ""
F = GetPath(Folders(Choice - 1))
If UseFolder <> "" Then
If UseFolder <> F Then
FSO.MoveFolder ProcFolder, UseFolder
FSO.MoveFolder F, ProcFolder
End If
Else
If FSO.FolderExists(ProcFolder) Then FSO.DeleteFolder ProcFolder
FSO.MoveFolder F, ProcFolder
End If
WSH.Run Command, 7, False
Quit 0
Sub SetMess
Set Mess = CreateObject("Scripting.Dictionary")
With Mess
.Add 0, "Выбор рабочей папки"
.Add 1, "Не указаны параметры!"
.Add 2, "Не указана обрабатываемая папка!"
.Add 3, "Не указана выполняемая команда!"
.Add 4, "Файл-список "
.Add 5, " не существует!"
.Add 6, "Обрабатываемая папка не существует." &_
"Не существует рабочая папка - "
.Add 7, "Укажите вариант выбора папки:"
.Add 8, "Указанное значение некорректно!"
End With
End Sub
'Проверка входных параметров
Sub CheckParams
Dim l
With WScript
If .Arguments.Count = 0 Then
MsgBox Mess(1), vbCritical + vbOKOnly, Mess(0)
Quit
End If
If .Arguments.Count < 2 Then
MsgBox Mess(2), vbCritical + vbOKOnly, Mess(0)
Quit
End If
If .Arguments.Count < 3 Then
MsgBox Mess(3), vbCritical + vbOKOnly, Mess(0)
Quit
End If
FolderList = GetPath(.Arguments(0))
If Not FSO.FileExists(FolderList) Then
MsgBox Mess(4) & FolderList & Mess(5), vbCritical + vbOKOnly, Mess(0)
Quit
End If
ProcFolder = GetPath(.Arguments(1))
For l = 2 To .Arguments.Count - 1
Command = Command & " " & .Arguments(l)
Next
Command = Mid(Command, 2)
End With
End Sub
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function
Sub Quit(pExitCode)
Set WSH = Nothing
Set FSO = Nothing
Set Mess = Nothing
WScript.Quit pExitCode
End Sub |
Вариант кнопки: Code: | TOTALCMD#BAR#DATA
C:\WHS\FolderChoice.vbs
C:\Test\FolderList.txt C:\Test\1 net send admin Привет
shell32.dll,87
Выбор рабочей папки
-1
|
Содержимое файла со списком папок FolderList.txt: Code: | C:\Test\11\
C:\Test\12\
C:\Test\13\
|
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|