2016-04-14 6 views
0

Aufruf ich folgendes Problem erlebe:den Pfad von der Befehlszeile verwendet finden, wenn eine ausführbare

Ich mag würde ecd.exe über eine Befehlszeile auszuführen.

Ich habe den vollständigen Pfad zur Umgebungsvariablen 'path' hinzugefügt.

Wenn ecd.exe von Befehlszeile aufrufen, erhalte ich die folgende Ausgabe:

Error: ecd.exe should be located under the Eclipse home directory. 

Diese ausführbare Datei korrekt ausgeführt wird, wenn ich den vollständigen Pfad in der Befehlszeile hinzufügen.


Ich habe gedacht, dass eine identische Datei in einem anderen path Ordner vorhanden ist.

Aber ich konnte es nirgendwo innerhalb des Dateisystems finden.

Wie kann ich den Pfad finden, der von der Befehlszeile beim Aufruf dieser ausführbaren Datei verwendet wird?

+0

@a_horse_with_no_name: Danke für die Bearbeitung (war nicht wirklich sicher, wie man auf "CMD" verweist). Gibt es eine Chance, dass du weißt, wie du das lösen kannst? –

+0

@a_horse_with_no_name: Unter 'C: \ Freescale \ CW MCU v10.6 \ eclipse'. –

+0

@a_horse_with_no_name: Ich dachte, dass die Shell eine Datei mit identischem Namen aus einem anderen Pfad ausführt. Ich wollte wissen, welcher Weg das ist. –

Antwort

2
@ECHO OFF 
SETLOCAL 
SET "pathd=%cd%;%path%" 
SET "pathd=%pathd:)=^)%" 
FOR /f "delims=" %%a IN ('echo %pathd:;=^&ECHO %') DO IF EXIST "%%~a\j*.exe" ECHO %%~a 

GOTO :EOF 

finden Dies sollte - na ja, J*.exe Dateien auf dem Weg (da ich nicht ecd.exe haben) - Ersatz nur ecd.exe für j*.exe.

Es hängt den aktuellen Pfad an den aktuellen Verzeichnisnamen, getrennt durch ;, dann ändert sich jede ) zu ^) in der resultierenden Zeichenfolge.

Die for arbeitet auf dem verketteten erweiterten Pfad-String durch für ; mit &echo Substitution - die Carets vor den ) in der vorhergehenden Zeile und die & in dieser Zeile „entkommt“ das Zeichen, cmd verursacht die besondere Bedeutung außer Acht zu lassen und behandle es als gewöhnlichen Charakter.

Dies liefert %%a als jedes einzelne path Verzeichnis der Reihe nach; Prüfen Sie, ob die Datei (j*.exe) im Verzeichnis vorhanden ist und echo der Verzeichnisname, wenn die Datei gefunden wird.

+0

Ich muss dies in eine Batch-Datei, richtig? –

+0

Ja - das wäre eine Idee. – Magoo

+0

Danke, es funktioniert !!! Aber leider funktioniert das, weil es mich zu einer Sackgasse auf meinem ursprünglichen Zweck führt (was zu verstehen ist, warum es sich anders verhält, wenn ich es mit/ohne den vollen Pfad nenne). Vielleicht sollte ich eine andere Frage stellen, ich werde deine Antwort auf jeden Fall akzeptieren. Danke noch einmal :) –

Verwandte Themen