Problem beim Ausführen der Batch-Datei im Pre-Build-Event

8

Ich versuche, während eines Pre-Build-Ereignisses eine Batch-Datei auszuführen. Ich habe ein neues Projekt und habe foo.bat hinzugefügt. Die Datei enthält die folgende Zeile:

%Vor%

Wenn ich die Befehlszeile für den Pre-Build-Event auf foo.bat setze, erhalte ich den folgenden Fehler:

  

Der Befehl "foo.bat" wurde mit dem Code 9009 beendet.

Wenn ich die Befehlszeile für den Pre-Build-Event auf call foo.bat setze, erhalte ich den folgenden Fehler:

  

Der Befehl "call foo.bat" wurde mit Code 1 beendet.

Alles, was ich im Zusammenhang mit diesen Codes gelesen habe, weist im Allgemeinen darauf hin, dass ein Problem mit dem Inhalt der Batch-Datei vorliegt (in diesem Fall nicht wahrscheinlich) oder dass das System die Batch-Datei nicht finden kann.

Die Batch-Datei funktioniert problemlos über eine Eingabeaufforderung. Dinge, die ich schon ausprobiert habe: Erstellt die Datei mit verschiedenen Werkzeugen, verschiedenen Kodierungen, Platziere Exit 0 in der Datei, verschiedene Build-Aktionen für die Datei und kopiere die Datei in das Ausgabeverzeichnis. Alles ohne Glück.

Was vermisse ich? Es muss etwas Einfaches sein.

Update: Ja, es war einfach - die Länge des Pfades war zu lang. Details finden Sie in der Antwort.

Danke!

    
John Laffoon 17.01.2011, 15:39
quelle

8 Antworten

3

Mein Problem scheint die Länge des Pfades zur Batch-Datei zu sein. Da dies ein Beweis des Konzepts war, ließ ich es am Standardort erstellen:

  

C: \ Dokumente und   Einstellungen \ UserXXX \ Meine   Dokumente \ Visual Studio   2010 \ Projekte \ SolutionXXX \ ProjectXXX \ foo.bat

Sobald ich die Lösung an einen Ort mit einem kürzeren Pfad verschoben habe, funktionierte es einwandfrei. = P

Danke für die Vorschläge!

    
John Laffoon 17.01.2011, 17:08
quelle
10

Ich habe das funktioniert und ich denke, ein Bild sagt mehr als tausend Worte, also hier ist das vollständige Setup in einem einzigen Screenshot.

    
HodlDwon 13.06.2013 02:39
quelle
4

Es ist möglich, dass Sie irgendwo in foo.bat ein anderes PATH haben. Versuchen Sie, den vollständigen Pfad zu Ihrer Batchdatei wie C:\Path\to\foo.bat anzugeben.

Wenn das Projekt erstellt wird, ist das aktuelle Verzeichnis das Verzeichnis mit der Datei .vcproj . Der Befehlspfad sollte relativ zu diesem Verzeichnis angegeben werden, wenn er nicht in PATH enthalten ist.

Eine weitere Möglichkeit, das Problem zu diagnostizieren, wäre cmd im Befehl pre-build event explizit wie folgt anzugeben:

%Vor%

oder sogar

%Vor%     
detunized 17.01.2011 16:11
quelle
1

1) siehe Fehlerdetails von View = & gt; Ausgabe 2) versuchen Sie Aufruf "$ (SolutionDir) \ xx \ xx.bat"

    
Alexander 05.08.2011 09:26
quelle
1

Ich habe das Problem gelöst, indem ich die .bat-Datei aus Windows Explorer erstellt habe und sie dann wiederum in mein Projekt eingefügt habe, anstatt direkt in VS 2010 zu erstellen.

    
Hallgeir Engen 19.01.2012 11:09
quelle
1

Das aktuelle Arbeitsverzeichnis der Pre-Build- und Post-Build-Ereignisse ist das Ausgabeverzeichnis, das vom Makro $ (OutDir) angegeben wird, nicht das Projektverzeichnis.

Die folgenden Tags in "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets" geben Folgendes an:

%Vor%     
I-A-N 23.10.2014 06:07
quelle
0

Das Problem, das ich vermute, ist, dass sich in Ihrem Ordnerpfad ein Leerzeichen befindet.

Also wird dieser Befehl wahrscheinlich für c:\development\projectABC\foo.bat funktionieren, aber nicht für c:\development\project ABC\foo.bat

Zumindest war das das Problem für mich, es könnte andere Probleme geben, aber ich vermute, dass dies am häufigsten ist. Die Lösung: Setzen Sie Anführungszeichen um Ihren Batch-Aufruf:

%Vor%     
SDK 07.04.2015 15:00
quelle
-2

Klicken Sie mit der rechten Maustaste auf das Projekt - & gt; Eigenschaften auswählen - & gt; build event tab auswählen Löschen Sie die Pre-Build-Ereigniskommentarzeilen.

    
Bala Kumar 19.06.2014 09:43
quelle

Tags und Links