#vbscript #dos
#vbscript #dos
Вопрос:
Мне нужно написать скрипт, который просматривает каталог, находит последний zip-файл (там есть .zip и .log), затем открывает командную строку в другом каталоге и запускает следующую команду:
loaddb.bat -Dlc.file="C:Program FilesXyEnterpriseSDL LiveContentdata_oldexport<name of the newest file.zip>" -Dlc.pswd=<oor password> RESTORE
Мы не можем установить какие-либо языки, поэтому он должен быть способен запускаться на сервере Windows 2003 и 2008, поэтому я выбрал vbscript…
У меня все работает, кроме запуска команды, и, похоже, я не могу ее взломать.
Мой код выглядит следующим образом:
Dim fileNewest
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set oFolder = fso.GetFolder("C:Program FilesXyEnterpriseSDL LiveContentdataexport")
For Each aFile In oFolder.Files
sExtension = fso.GetExtensionName(aFile.Name)
If sExtension = "log" Then
'Msgbox "The file extension is a " amp; sExtension
Else
'Msgbox "The file extension is a " amp; sExtension
If fileNewest = "" Then
Set fileNewest = aFile
Else
If fileNewest.DateCreated < aFile.DateCreated Then
Set fileNewest = aFile
End If
End If
End If
Next
Msgbox "The Newest File in the folder is " amp; fileNewest.Name amp; chr(13) amp; "Size: " amp; fileNewest.Size amp; " bytes" amp; chr(13) amp; "Was last modified on " amp; FileNewest.DateLastModified
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%comspec% /k c: amp; cd ../../../Program FilesXyEnterpriseSDL LiveContentdataexport"
Как я могу теперь запустить команду после открытия этой строки Dos?
Спасибо,
Редактировать:
Добавление ответа сработало с большой помощью от Алекса К.:
objShell.Run "%comspec% /k c: amp; cd ""C:Program Files (x86)XyEnterpriseSDL LiveContent"" amp; """"loaddb RESTORE -Dlc.file=C:PROGRA~2XYENTE~1SDLLIV~1dataImport" amp; fileNewest.Name amp; " -Dlc.pswd=N2kAs72z"""""
Комментарии:
1. Какие факты говорят в пользу использования командной строки для выполнения программы?
2. Извините, я не уверен, что вы имеете в виду. Мне нужно запустить команду loaddb.bat с путем к файлу, который меняется каждые 12 часов (выбирается из скрипта)
3. Я вижу. ss64.com/vb/run.html содержит пример. Найдите слово ‘DIR’. Надеюсь, это то, что вы ищете.
Ответ №1:
Вам нужно заключить этот путь в кавычки, поскольку он содержит пробелы;
objShell.Run "%comspec% /k c: amp; cd ""../../../Program FilesXyEnterpriseSDL LiveContentdataexport"""
Комментарии:
1. Я создал xxx.bat в разделе «C:Program Files BBC iPlayer Desktop » и это работает для меня:
objShell.Run "%comspec% /k c: amp; cd ""C:Program FilesBBC iPlayer Desktop"" amp; ""xxx.bat"""
2. Блестяще, у меня тоже запущен файл test.bat, так что спасибо. Как мне теперь передать имя zip-файла в эту строку?
3. как насчет
"%comspec% /k c: amp; cd ""PATHHERE"" " amp; """" amp; fileNewest.Name amp; """"
4. Понял: objShell. Запустите «%comspec% /k c: amp; cd «»C:Program Files (x86)XyEnterpriseSDL LiveContent»» amp; «»»»loaddb RESTORE -Dlc.file=C:PROGRA ~2XYENTE ~1SDLLIV ~1dataImport» amp; fileNewest. Name amp; » -Dlc.pswd=N2kAs72z»»»»»
5. Я попытался указать путь в -Dlc.file с помощью » но это не сработало, независимо от того, сколько я вставил с обеих сторон, поэтому я решил просто использовать сокращенные имена DOS, и это сработало.