Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Переименование папки с проверкой 
Author Message
Batya



PostPosted: Mon Jul 27, 2009 18:42    Post subject: Reply with quote

_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\

_________________
Нет, я не сплю. Я просто медленно моргаю.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group