2016-04-20 7 views
-1

Werfen Sie einen Blick auf meine Batch-Datei unten. Wie Sie sehen können, bin ich ein ziemlich Anfänger scripter. Aber, hier ist was ich versuche zu erreichen.Batch w/Mehrere .EXE und Auto Antworten

Erstellen Sie einen TEMP-Ordner, um einen anderen Ordner und seinen Inhalt von einem Server auf einen anderen Server zu kopieren. Kopieren Sie dann den Ordnerinhalt, das funktioniert. Aber der START der ersten .exe gibt mir die Notwendigkeit, 2 Fragen zu beantworten. Sie müssen als Tastendruck von 1 beantwortet werden, und für die zweite Frage muss eine 0 eingegeben werden. Dann wird AppRemover6.exe ausgeführt. Ich habe versucht, Echo zu verwenden, aber ich vermisse etwas oder Syntax ist falsch.

Ich möchte auch, dass die erste exe vollständig beendet wird, bevor Sie zur nächsten exe gehen.

Wie für die reg-Datei muss ein Windows-Popup automatisch mit einer Antwort (Mausklick) von YES beantwortet werden, um die Registrierung zu ändern.

@ECHO OFF 
MD -P C:\TEMP 
XCOPY "\\mybigserver\Apps\AppCleanerUtils" C:\TEMP /E /I 
START /D "C:\TEMP\AppCleanerUtil6" AppRemover6.exe 
START /D "C:\TEMP\AppCleanerUtil6" PatchRegistry.reg 
START /D "C:\TEMP\C:\TEMP\AppCleanerUtil5" AppRemover5.exe 
RMDIR /S /Q "C:\TEMP\AppCleanerUtil6" 
RMDIR /S /Q "C:\TEMP\AppCleanerUtil5" 

Wenn es eine bessere Möglichkeit gibt, dies zu tun?

+2

Was glauben Sie, dass das '-P' auf' MD' schaltet? Bitte posten Sie den ECHO-Befehl, den Sie ausprobiert haben, und die Ergebnisse. – lit

+0

Ich glaubte, dass das -P prüfen würde, ob der Ordner existiert, und nicht, wenn es dort wäre. Nichtsdestoweniger, selbst wenn es dort ist, wird es die Ordner kopieren, die ich in ein C: \ TEMP kopiert habe. Ich habe versucht echo

Antwort

0

viele Fragen so für die erste Oberfläche vor dem nächsten Gebrauch beginnen:

START /WAIT ... 

für Übergabe von Parametern, um Ihre Anwendung versucht Rat leeren Arguments „“ von hier: Using the "start" command with parameters passed to the started program

+0

Diese Änderung war richtig für mich, ich in der Lage war, wie dies in einer Zeile eingeben an jedem START: 'START/WAIT/D "C: \ TEMP \ AppCleanerUtil6" AppRemover6.exe' ' START/WAIT/D "C: \ TEMP \ AppCleanerUtil6" PatchRegistry.reg ' ' START/WAIT/D "C: \ TEMP \ C: \ TEMP \ AppCleanerUtil5" AppRemover5.exe' Jetzt musste ich manuell 1 eingeben, dann 0 in der Befehlszeile, und wenn es fertig war, musste ich ENTER drücken, um es zu beenden, die Box zu schließen und zum nächsten START im Code zu gehen. Das scheint also wie geplant zu funktionieren. Als nächstes, die richtige Weise, eine 1,0 zu übergeben, drücken Sie die Taste, um das Programm zu beenden, und gehen Sie zum nächsten. –

+0

@ T.J. Williams für den korrekten Weg, Params zu deinem AppRemover6 zu übergeben.exe, wenn nicht allgemeiner Weg mit "" vor Befehl und Parametern am Ende wie in meiner Antwort, Sie können versuchen, es von cmd mit /? und sehen, welche Möglichkeiten es bietet; aber es wird spezifisch für Ihre App, ich habe es nicht, so kann nicht mit dem Testen dort helfen, aber immer noch - wenn irgendeine Frage - einfach fragen – Drako

0

Es gibt keine -P Schalter auf dem MD Befehl. Selbst wenn es da wäre, ist es nicht nötig. Windows hat bereits eine TEMP Variable, die verwendet werden sollte.

Wenn das AppRemover6.exe Programm nicht von Stdin liest, dann wird das Umleiten einer Datei nicht funktionieren. Hat AppRemove6.exe irgendwelche Befehlszeilenparameter, die es veranlassen würden, Eingaben von einer Datei zu lesen?

Versuchen Sie, es direkt von der Eingabeaufforderung cmd zu arbeiten. Erstellen Sie eine Datei mit den zwei Elementen, die eingegeben werden müssen.

=== response.txt 
0 
1 

AppRemover6.exe <response.txt 

Wenn ich es wäre, würde ich diese Änderungen vornehmen.

@ECHO OFF 
XCOPY "\\mybigserver\Apps\AppCleanerUtils" "%TEMP%" /E /I 
START /WAIT /D "%TEMP%\AppCleanerUtil6" AppRemover6.exe 
START /D "%TEMP%\AppCleanerUtil6" PatchRegistry.reg 
START /D "%TEMP%\C:\TEMP\AppCleanerUtil5" AppRemover5.exe 
RMDIR /S /Q "%TEMP%\AppCleanerUtil6" 
RMDIR /S /Q "%TEMP%\AppCleanerUtil5" 
+0

'AppRemover6.exe

+0

Bitte "@ECHO OFF" auskommentieren oder entfernen, um zu sehen, ob etwas mehr darüber auftaucht, welche Datei nicht gefunden werden kann. In welchem ​​Verzeichnis befindet sich die 'response.txt' Datei? – lit

+0

Die response.txt befindet sich im selben Verzeichnis wie die exe. Ich werde das Echo einschalten und sehen, was es zeigt. –