vb script: пытается открыть командную строку, перейти в каталог и выполнить команду - PullRequest
0 голосов
/ 31 мая 2011

Мне нужно написать скрипт, который просматривает каталог, находит последний файл .zip (там есть .zip и .log), затем открывает командную строку в другом каталоге и запускает следующую команду:

loaddb.bat -Dlc.file="C:\Program Files\XyEnterprise\SDL LiveContent\data_old\export\<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 Files\XyEnterprise\SDL LiveContent\data\export")

For Each aFile In oFolder.Files
sExtension = fso.GetExtensionName(aFile.Name)
    If sExtension = "log" Then
            'Msgbox "The file extension is a " & sExtension
        Else
            'Msgbox "The file extension is a " & 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 " & fileNewest.Name & chr(13) & "Size: " & fileNewest.Size & " bytes" & chr(13) & "Was last modified on " & FileNewest.DateLastModified 

Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%comspec% /k c: & cd ../../../Program Files\XyEnterprise\SDL LiveContent\data\export"

Как теперь можно запустить команду после открытия этого приглашения Dos?

Спасибо,

РЕДАКТИРОВАТЬ:

Добавление ответа работал с большой помощью Алекса K:

objShell.Run "%comspec% /k c: & cd ""C:\Program Files (x86)\XyEnterprise\SDL LiveContent\"" & """"loaddb RESTORE -Dlc.file=C:\PROGRA~2\XYENTE~1\SDLLIV~1\data\Import\" & fileNewest.Name & " -Dlc.pswd=N2kAs72z"""""

1 Ответ

2 голосов
/ 31 мая 2011

Вам нужно указать этот путь, так как он содержит пробелы;

objShell.Run "%comspec% /k c: & cd ""../../../Program Files\XyEnterprise\SDL LiveContent\data\export"""
...