Ich kann kein Powershell-Skript zum direkten Ausführen einer Bat-Datei erhalten. Dies funktioniert beispielsweise in der Befehlszeile:
.\\my-app\my-fle.bat
Wenn ich diesen Befehl zu einem Skript hinzufüge, wird Folgendes ausgegeben:
The term '.\\my-app\my-file.bat' is not recognized as the
name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included,
verify that the path is correct and try again.
Ich habe auch folgendes versucht, mit dem gleichen Ergebnis:
& .\\my-app\my-fle.bat
& ".\\my-app\my-fle.bat"
\my-app\my-fle.bat
& \my-app\my-fle.bat
& "\my-app\my-fle.bat"
Hinweis: Es muss den letzten Code zurückgeben, da ich den Erfolg des Stapels überprüfen muss.
batch-file
powershell
cmcginty
quelle
quelle
Antworten:
cmd.exe /c '\my-app\my-file.bat'
quelle
Um die .bat-Datei auszuführen und Zugriff auf den letzten Exit-Code zu erhalten, führen Sie sie wie folgt aus:
quelle
my-app
es sich im relativen Pfad befindet oder ich den Laufwerksbuchstaben verwende. Ich habe versucht zu vermeiden, dass das Skript an ein bestimmtes Laufwerk gebunden ist.my-app
sich ein Ordner im Stammverzeichnis des Laufwerks, mit dem Sie arbeiten? Wenn ja,& \my-app\my-file.bat
funktioniert für mich. Wie ruft man das .ps1-Skript auf?Versuchen Sie dies, Ihre Punktquelle war ein wenig aus. Bearbeiten, Lastexitcode-Bits für OP hinzufügen.
$A = Start-Process -FilePath .\my-app\my-fle.bat -Wait -passthru;$a.ExitCode
-WindowStyle Hidden
für unsichtbare Charge hinzufügen .quelle
Angenommen, my-app ist ein Unterverzeichnis unter dem aktuellen Verzeichnis. Der $ LASTEXITCODE sollte ab dem letzten Befehl vorhanden sein:
Wenn es von einem Fileshare war:
quelle
Die Lösung von @Rynant hat bei mir funktioniert. Ich hatte jedoch ein paar zusätzliche Anforderungen:
Folgendes habe ich (endlich) zum Arbeiten gebracht:
[PS-Skriptcode]
[Runner.bat]
@echo OFF REM This script can be executed from within a powershell script so that the bat file REM passed as %1 will not cause execution to halt if PAUSE is encountered. REM If {logfile} is included, bat file output will be appended to logfile. REM REM Usage: REM runner.bat [path of bat script to execute] {logfile} if not [%2] == [] GOTO APPEND_OUTPUT @echo | call %1 GOTO EXIT :APPEND_OUTPUT @echo | call %1 1> %2 2>&1 :EXIT
quelle