Exécution de l'vbscript suivant pour appeler svnadmin dump échoue (pas de décharge est en cours de création)vbscript appelant svnadmin vidage
Set objShell = CreateObject("WScript.Shell")
Set objShellExec = objShell.Exec("svnadmin dump C:\svn_repos > C:\fullbackup")
j'ai découvert d'un autre poste, svn dump fails with WScript.Shell que je devais créer un nouvel interpréteur de commandes en utilisant cmd suit:
Set objShellExec = objShell.Exec("%comspec% /c" & "svnadmin dump C:\svn_repos > C:\fullbackup")
Cela a créé avec succès la décharge, mais je ne pourrais jamais lire les informations de sortie (par exemple * révision 100. * Dumped révision 101. Dumped, etc.). J'ai essayé
Do While objWshScriptExec.Status = 0
Wscript.Echo objShellExec.StdOut.Readline
Wscript.Echo objShellExec.StdErr.Readline
WScript.Sleep 100
Loop
mais rien ne s'affiche jamais. Puis-je savoir comment je peux lire les informations de sortie et pourquoi j'ai besoin de créer un nouvel interpréteur de commandes en utilisant "% comspec%/c" avant que la commande svnadmin dump s'exécute correctement? Merci.
Cordialement, Dexton
Modifié Code:
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
Solution:
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
Merci pour la réponse. Si je courais "svnadmin dump" directement à partir de la ligne de commande, je verrais: * Dumped révision 100. * Dumped révision 101. * Dumped révision 102 ... etc Comment puis-je capturer ces informations de sortie alors? Ces informations ne sont évidemment pas envoyées à stdout car c: \ fullbackup ne contient jamais les informations ci-dessus. – Dexton
vous pouvez supprimer la redirection de sortie vers 'c: \ fullbackup' et utiliser simplement la boucle' do while' que vous avez. – ghostdog74
Exécution de "svnadmin dump C: \ svn_repos C: \ fullbackup" sans redirection de sortie à partir de la ligne de commande, un hôte de données de vidage qui est généralement stocké dans le fichier de vidage apparaîtra à l'écran. Si j'exécutais la commande "svnadmin dump C: \ svn_repos> C: \ fullbackup" à partir de la ligne de commande, un fichier de vidage serait créé mais apparaître à l'écran serait verbeux (je pense) information (ie * Dumped révision 100. * Révision Dumped 101. etc). Comment puis-je capter cette information "verbeuse" et avoir un fichier de vidage? – Dexton