Benutzer mit den meisten Antworten
Erstellen und ausfuehren eines Befehls in Powershell

Frage
-
Guten Tag,
Ich habe ein Problem das ich alleine nicht gelöst bekomme, und leider hat mich google diesemal auch enttäuscht.
Ich arbeite gerade an diversen Mod's für das Spiel No Man's Sky. Um Mods für dieses Spiel zu produzieren, muss man diverse Playstation files Compilieren (PSARC)/(*.PAK)
Dies geschieht über diverse Kommandozeilen Programme.
die meisten Programme kann ich einfach über Batch Dateien steuern da die Kommandos immer gleich sind.
Für ein Programm muss ich aber in dem Kommando ein Filename eintragen.
Da bisher fast nix über die Architektur diese Spiel bekannt ist habe ich hier viel Reverse Engineering zu betreiben. Das heisst ich muss tausende Dateien decompilieren und dafür brauche ich ein automatisierten Befehl
Ich möchte nun ein Powershell Script erstellen, dass mir den Befehl automatisch anpasst jenachdem was für ein File neben dem script im gleichen Ordner liegt.
z.B:
MBINCompiler.exe C:\temp\GCSPACESHIPGLOBALS.GLOBAL.MBIN pause
Dieser Befehl benötige ich um aus einer *.MBIN Datei eine lesbare XML datei zu erstellen. es enpackt das File GCSPACESHIPGLOBALS.GLOBAL.MBIN
Dieses File liegt neben der MBINCompiler.exe im gleichen Ordner.
Wie müsste ein Powershell Script aussehen das mir diesen Befehl automatisch anpasst für das Aktuelle *.MBIN file?
es müsste diesen befehl genereiern und ausführen:
MBINCompiler.exe C:\temp\[FILENAME DER NEBEN DER EXE IM ORDENR LIEGT UND IMMER EINE MBIN DATEI IST] pause
Ich hoffe ihr könnt mir dabei Helfen
Vielen Dank
Marco
- Bearbeitet Pin-Lui Freitag, 26. August 2016 08:48
Antworten
-
Natürlich crasht der Compiler, wenn man ihm als Kommandozeilenparameter Code übergibt, für den er wahrscheinlich nicht ausgelegt ist.
Du musst die Dateien im Ordner bestimmen mit
$Files = Get-Childitem "C:\temp\*.mmbin"
Wenn du eine Datei daraus auswählen willst, kannst du$File = $Files | Out-Gridview -Passthru
Oder als Schleife über alle kannst du es so ausführen:foreach($File in $Files) { MBinCompiler.exe $file.Fullname }
Alle Antworten
-
Ich bin zwar jetzt nicht der PS Experte aber versuche mal das:
MBINCompiler.exe C:\temp\*.MMBIN pause
Ich werde selber gleich mal ausprobieren ob das so funktionieren kann.
EDIT: wenn ich jetzt z.B. in einem Ordner ./*.txt eingebe öffnet er mir die erste .txt Datei die er findet müsste hier auch funktionieren oder?
Felix
Felix Lerchner
- Bearbeitet Chaftalie Freitag, 26. August 2016 08:38
-
Natürlich crasht der Compiler, wenn man ihm als Kommandozeilenparameter Code übergibt, für den er wahrscheinlich nicht ausgelegt ist.
Du musst die Dateien im Ordner bestimmen mit
$Files = Get-Childitem "C:\temp\*.mmbin"
Wenn du eine Datei daraus auswählen willst, kannst du$File = $Files | Out-Gridview -Passthru
Oder als Schleife über alle kannst du es so ausführen:foreach($File in $Files) { MBinCompiler.exe $file.Fullname }
-
Auch ihnen vielen Dank für die Antwort.
ich habe folgendes versucht:
$Files = Get-Childitem "C:\temp\*.mbin" foreach($File in $Files) { MBinCompiler.exe $file.Fullname }
und bekomme diese Meldung im ISE:
PS C:\temp> C:\temp\test.ps1 Die Benennung "MBinCompiler.exe" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei od er eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad ko rrekt ist (sofern enthalten), und wiederholen Sie den Vorgang. Bei C:\temp\test.ps1:4 Zeichen:20 + MBinCompiler.exe <<<< $file.Fullname + CategoryInfo : ObjectNotFound: (MBinCompiler.exe:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
EDIT:
Habe es Hinbekommen mit
$Files = Get-Childitem "C:\temp\*.mbin" foreach($File in $Files) { ./MBINCompiler.exe $file.Fullname }
DANKE!
-
Die foreach Schleife braucht man hier aber nicht oder? Pin-Lui hat schließlich soweit ich das verstanden habe immer nur eine .mbin Datei da drinnen.
Vielleich Hilft es den Pfad des Compilers vor seinem Namen zu packen.
bzw. ./ müsste auch schon reichen da das script ja im gleichen Verzeichnis liegt.EDIT: ok das habe ich nicht mehr gesehen naja jetzt stehts doppelt da ^^
Felix Lerchner
- Bearbeitet Chaftalie Freitag, 26. August 2016 09:07 da war ich doch um einiges zu langsam