Многократный запуск 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-и объектов. Может, кто подскажет, как победить это несчастье. На данном этапе не могу этого догнать.
Спасибо.