Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 78
Благодарности: 23

Профиль | Отправить PM | Цитировать


Многократный запуск InputBox - победил, при помощи создания временных файлов. Но пришлось создавать два скрипта.
Скрипт№1:
Код: Выделить весь код
Set FSO = CreateObject("Scripting.FileSystemObject")
'Узнаю имена перемещаемых объектов:
Dim Arg,objArgs,s
Set objArgs = WScript.Arguments 
For Each Arg In objArgs
  s=s & Arg & vbCrLf 
Next
'Пишу имена в файл:
  Set f = FSO.OpenTextFile("C:\Windows\OSA\Moving_to_folder\testfile.log", 8, True) 
 f.Write s
f.Close 
'Узнаю путь для создания новой папки:
 If WScript.Arguments.Count = 1 Then
   sFile   = WScript.Arguments.Item(0)
 End If

on error resume next
Filespec = sFile 
 Set folder = fso.GetFolder(fileSpec)
 Set file   = fso.GetFile(fileSpec) 
'Пишу путь в файл:
  Set f1 = FSO.OpenTextFile("C:\Windows\OSA\Moving_to_folder\testfile1.log",  2, True) 
 f1.WriteLine file.ParentFolder & "\"
 F1.WriteLine folder.ParentFolder & "\"
 f1.Close
'Запускаю второй скрипт:
Set WshShell = CreateObject ("WScript.Shell")
WSHShell.Run "C:\Windows\OSA\Moving_to_folder\Start1.vbs",,True
Скрипт№2:
Код: Выделить весь код
'Запрещаю повторный запуск скрипта:
Set FSO = CreateObject("Scripting.FileSystemObject")
  If FSO.FileExists("C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt") Then
    WScript.Quit
End If
    FSO.CreateTextFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt"
'Читаю путь для содания папки;
Set objFSO = CreateObject ("Scripting.FileSystemObject")
 filelocation = "C:\Windows\OSA\Moving_to_folder\testfile1.log" 
  If objFSO.FileExists(filelocation) Then 
Set logfile = objFSO.OpenTextFile(filelocation, 1) 

Do While Not logfile.AtEndOfStream
   	strcontents = "" 
	strcontents = logfile.ReadLine 
	    If Not strcontents = "" then 
'Создаю папку:
strRoot=strcontents

Set objFolder=objFSO.GetFolder(strRoot)
Set colFolders=objFolder.SubFolders

strFolder=InputBox("Введите имя папки:", "Перемещение в создаваемую папку:")
  If objFSO.FolderExists(strRoot & strFolder) Then
Else
    colFolders.Add strFolder
End If
End if 	    
  Loop 
  logfile.Close
end if 
'Удаляю временный файл:
   objFSO.DeleteFile "C:\Windows\OSA\Moving_to_folder\testfile1.log"
'Читаю имена перемещаемых объектов:
 filelocation = "C:\Windows\OSA\Moving_to_folder\testfile.log" 
  If objFSO.FileExists(filelocation) Then 
Set logfile = objFSO.OpenTextFile(filelocation, 1) '
Do While Not logfile.AtEndOfStream '
   	strcontents = "" 
	strcontents = logfile.ReadLine 
    If Not strcontents = "" then 
'Перемещаю в созданную папку:
Set FSO =CreateObject("scripting.FileSystemObject") 
   on error resume next
    fso.movefolder strcontents , strRoot & strFolder & "\"
    fso.movefile strcontents , strRoot & strFolder & "\"
End if 	   
  Loop 
  logfile.Close 
end if 
'Удаляю временные файлы:
   objFSO.DeleteFile "C:\Windows\OSA\Moving_to_folder\testfile.log"

      FSO.DeleteFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt"
Но проявилась ещё одна бяка.
Работает только для 18-и, 20-и объектов. Может, кто подскажет, как победить это несчастье. На данном этапе не могу этого догнать.
Спасибо.

Отправлено: 12:35, 20-02-2011 | #5