2010-10-12 8 views

Répondre

0

trouvé une manière qui fonctionne, aurait essayé avant tout. Je suis un peu gêné qu'il était aussi facile en fait:

cd P: \ comarquer \

CALL Export.bat

cd P: \ Generic \

CALL Export. bat

cd P: \ TriBrand \

CALL Export.bat

cd P: \ UBA \

CALL Export.bat

0

serait une simple commande shell faire? Vous pouvez appeler cela à partir d'une invite de commande:

for /R %F in (*.bat) do "%F" 

ou les éléments suivants d'un fichier .bat:

for /R %%F in (*.bat) do call "%%F" 
+0

bien que ce que je voudrais vraiment faire est d'exécuter un script de traitement par lots à la fin d'un script .vbs J'ai eu des problèmes en essayant de les exécuter depuis les scripts cmd et .bat avec Pour une raison inconnue, il semble utiliser le même chemin que celui d'où vous l'exécutez plutôt que d'où le script .bat a été placé. Espérant qu'un script .vbs aiderait, mais la façon dont il est recherché qu'il ne va probablement pas.Un moyen de spécifier le chemin, d'utiliser le chemin où le fichier est placé? – jmituzas

0

Comme initialement demandé, voici une solution VBScript ...

Le problème décrit est probablement lié à la « Script-travail-Répertoire ".

Try this ...

Dim objShell 
    Dim blnWaitOnReturn 
    Dim strOriginalCD 
    Dim strCmd 
    Dim intWindowStyle 
    Dim intExitCode 

    Set objShell = WScript.CreateObject("Wscript.Shell") 
'' if necessary, save the original "Script-Working-Directory" 
    strOriginalCD = objShell.CurrentDirectory 

    intWindowStyle = 1 
    blnWaitOnReturn = True 

    objShell.CurrentDirectory = "p:\Co-Brand\" 
    strCmd = "%comspec% /K export.bat" 
    intExitCode = objShell.Run(strCmd, intWindowStyle, blnWaitOnReturn) 

    objShell.CurrentDirectory = "p:\Generic\" 
    strCmd = "%comspec% /K export.bat" 
    intExitCode = objShell.Run(strCmd, intWindowStyle, blnWaitOnReturn) 

    objShell.CurrentDirectory = "p:\Tri-Brand\" 
    strCmd = "%comspec% /K export.bat" 
    intExitCode = objShell.Run(strCmd, intWindowStyle, blnWaitOnReturn) 

'' if necessary, restore the original "Script-Working-Directory" 
    objShell.CurrentDirectory = strOriginalCD 

Notes:

'' If filename contains spaces make sure to add double-quotes around filename 
    strCmd = "%comspec% /K " & Chr(34) & "File name with spaces.bat" & Chr(34) 

'' To run the commands in a "Hidden" window, use: 
    intWindowStyle = 0 

'' To run the commands "Minimized", use: 
    intWindowStyle = 7 

Plus d'info sur "objShell.Run" se trouve ici: http://ss64.com/vb/run.html

Les exemples ci-dessus provoqueront VBScript Attendez que chaque ".bat" appelé se termine et retourne un "ExitCode" avant de continuer.

Si vous ne voulez pas VBScript d'attendre un « .bat » pour terminer avant de passer à la suivante puis définissez blnWaitOnReturn = False, et enlever intExitCode comme:

... 
    blnWaitOnReturn = False 

    objShell.CurrentDirectory = "p:\Co-Brand\" 
    strCmd = "%comspec% /K export.bat" 
    objShell.Run strCmd, intWindowStyle, blnWaitOnReturn 

    objShell.CurrentDirectory = "p:\Generic\" 
    strCmd = "%comspec% /K export.bat" 
    objShell.Run strCmd, intWindowStyle, blnWaitOnReturn 

    objShell.CurrentDirectory = "p:\Tri-Brand\" 
    strCmd = "%comspec% /K export.bat" 
    objShell.Run strCmd, intWindowStyle, blnWaitOnReturn 
    ... 

Si vous souhaitez pouvoir obtenir le "Status" et "ProcessID", et accéder aux flux standards de l'exécutable à lire/écrire à stdout/stderr du processus en temps réel pendant l'exécution du processus, puis utiliser "objShell.Exec".

Plus d'information sur "objShell.Exec "peut être trouvé ici: http://ss64.com/vb/exec.html

Questions connexes