سؤال

تشغيل 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
هل كانت مفيدة؟

المحلول

لا يمكنك قراءة الحالة لأنك تقوم بإعادة توجيه كل ما تبذلونه من Stdout 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 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top