#vbscript #wmi
#vbscript #wmi
Вопрос:
Я пытаюсь написать VBScript, который будет выполнять все файлы в данном каталоге (в основном это будут пакетные файлы).
Я пытался изменить скрипт, который удаляет все файлы, но я не могу заставить его работать.
Вот что у меня есть:
Option Explicit
'===========================================================================
' Scheduled Task - Visual Basic ActiveX Script
'===========================================================================
Call ExecuteDirectory("c:userspublicdocumentsscheduledaily")
Function ExecuteDirectory(strPath2Folder)
Dim fso, f, fc, f1, strFiles, intFiles
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
strFiles = ""
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FolderExists(strPath2Folder)) Then
Set f = fso.GetFolder(strPath2Folder)
Set fc = f.Files
'-- Execute each file in Folder
For Each f1 in fc
strFiles = strFiles amp; f1.Name amp; vbCrLf
msgbox strPath2Folder amp; "" amp; strFiles
WshShell.Run Chr(34) amp; strFiles amp; Chr(34), 1, true
Next
Set f1 = Nothing
Set fc = Nothing
Set f = Nothing
End If
Set fso = Nothing
End Function
В строке msgbox отображается полный путь и имя файла, который я хочу выполнить, но строка запуска генерирует ошибку file not found.
Комментарии:
1. Я предполагаю, что это работает для первого файла, а затем завершается сбоем для всех файлов после первого. Правильно ли это?
Ответ №1:
Переменная strFiles
постоянно создает список файлов с разрывами строк между ними. Например, если ваша папка содержит файлы «test1.bat» и «test2.bat», вы получите следующее:
Итерация 1: strFiles =
test1.bat
Итерация 1: strFiles =
test1.bat test2.bat
Я не думаю, что это то, что вы хотите сделать. Если вы хотите просто запускать каждый скрипт по порядку, вы должны просто передать одно имя скрипта.
Попробуйте изменить внутренний цикл на этот:
For Each f1 in fc
Dim fileToRun
fileToRun = strPath2Folder amp; "" amp; f1.Name
WshShell.Run Chr(34) amp; fileToRun amp; Chr(34), 1, true
Next
Ответ №2:
Это очень неаккуратный подход. Если вам нужно выполнить весь каталог пакетных файлов за один раз, значит, вы используете их неправильно. Вам должен понадобиться только один командный файл или один скрипт в любое время. Я бы начал изучать всю вашу систему для лучшего подхода к тому, чего вы пытаетесь достичь.