vbscript, вызывающий свадминский дамп - PullRequest
0 голосов
/ 09 марта 2010

Сбой следующего vbscript для вызова дампа svnadmin завершается неудачей (т.е. дамп не создается)

Set objShell = CreateObject("WScript.Shell")
Set objShellExec = objShell.Exec("svnadmin dump  C:\svn_repos > C:\fullbackup")

Из другого поста я обнаружил, что сбой svn завершается с WScript.Shell тем, что мне пришлось создать новый интерпретатор команд с помощью cmd следующим образом:

Set objShellExec = objShell.Exec("%comspec% /c" & "svnadmin dump  C:\svn_repos > C:\fullbackup")

Это успешно создало дамп, но я так и не смог прочитать выходную информацию (т.е. * Дампированная версия 100. * Дампированная версия 101. и т. Д.). Я пытался

Do While objWshScriptExec.Status = 0
    Wscript.Echo objShellExec.StdOut.Readline
    Wscript.Echo objShellExec.StdErr.Readline
    WScript.Sleep 100
Loop

но ничего не отображается.

Могу ли я узнать, как я могу прочитать информацию о выходе, а также зачем мне нужно было создать новый интерпретатор команд, используя "% comspec% / c", прежде чем команда svnadmin dump будет выполняться правильно? Спасибо.

С уважением, Dexton

Отредактированный код:

Set objShell = CreateObject("WScript.Shell")

Set objFS = CreateObject("Scripting.FileSystemObject") 

strOutput = "c:\svn_backup\fullbackupa" 

Set objOutFile = objFS.CreateTextFile(strOutput,True) 

Set objShellExec = objShell.Exec("%comspec% /c " & "svnadmin dump C:\svn_repos")

Do While objShellExec.Status = 0 
  stdoutline=objShellExec.StdOut.Readline 
  'Wscript.Echo stdoutline 'echo to standard output 
  Wscript.Echo objShellExec.StdErr.Readline 
  objOutFile.WriteLine(stdoutline & vbCrLf) 'write to file at the same time 
  WScript.Sleep 100 
Loop 


objOutFile.Close

Решение:

Set objShell = CreateObject("WScript.Shell")

Set objFS = CreateObject("Scripting.FileSystemObject") 

strOutput = "c:\svn_backup\fullbackupa" 

Set objOutFile = objFS.CreateTextFile(strOutput,True) 


Set objShellExec = objShell.Exec("%comspec% /c " & "svnadmin dump C:\svn_repos > c:\svn_backup\fullbackupb")

Do While objShellExec.Status = 0 
  stdoutline=objShellExec.StdErr.Readline 
  Wscript.Echo stdoutline 'echo to standard output 
  'Wscript.Echo objShellExec.StdErr.Readline 
  objOutFile.WriteLine(stdoutline & vbCrLf) 'write to file at the same time 
  WScript.Sleep 100 
Loop 


objOutFile.Close

1 Ответ

0 голосов
/ 09 марта 2010

вы не можете прочитать статус, потому что вы перенаправляете весь свой стандартный вывод на c:\fullbackup. Вам следует открыть файл c:\fullbackup и прочитать его содержимое.

Обновление: вы можете записать свой статус в выходной файл, что-то вроде этого

Set objFS = CreateObject("Scripting.FileSystemObject")
strOutput = "c:\fullbackup"
Set objOutFile = objFS.CreateTextFile(strOutput,True)
...
Do While objWshScriptExec.Status = 0
    stdoutline=objShellExec.StdOut.Readline
    Wscript.Echo stdoutline 'echo to standard output
    'Wscript.Echo objShellExec.StdErr.Readline
    objOutFile.WriteLine(stdoutline & vbCrLf) 'write to file at the same time
    WScript.Sleep 100
Loop
....
objOutFile.Close 
...