VBScript استدعاء تفريغ svnadmin
سؤال
تشغيل 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