2016-06-30 5 views
1

Ich habe eine Batch-Datei, wo ein Benutzer einen Pfad zu einer Datei eingibt und ich extrahiere den Dateinamen Formular diesen Pfad.Batch: Verketten Variable und Zeichenfolge, um Ausgabepfad

Ich benutze diesen Dateinamen, um einen Ordner mit dem gleichen Namen zu erstellen.

In diesem Ordner möchte ich eine log.txt-Datei erstellen, die der Prozess, den ich in meiner Batch-Datei anrufe, seine Protokollnachrichten schreiben kann.

Hier ist der Code:

set /p pathFoFile="Enter path fo file: " 
FOR %%i IN ("%pathFoFile%") DO (
    set outputFolder=%%~ni 
) 

someprocess -p1 blabla -p2 blabla -p3 %outputFolder% > %outputFolder%\log.txt 

Der letzte Teil, %outputFolder%\log.txt, scheint das Problem zu sein, da es funktioniert, wenn ich

jedoch nur > log.txt setzen, wenn ich dieses Echo:

echo %outputFolder%\log.txt 

es druckt den richtigen Pfad.

Wie kann ich den Ordnernamen verwenden und diese log.txt-Datei erstellen?

EDIT

Der Weg, den ich könnte wie folgt aussehen erhalten:

..\some\folder\thefile.egf 

oder nur

thefile.egf 

oder ein absoluter Pfad.

ich extrahieren die

thefile 

und würde gerne nennen:

someprocess -p1 blabla -p2 blabla -p3 thefile > thefile\log.txt 

der Ordner thefile enthält log.txt sollte auf die Batchdatei relativ erstellt werden. Im Pfad befinden sich keine Laufwerkbuchstaben.

Der Fehler, den ich bekomme, wenn %outputFolder%\log.txt oder "%outputFolder%\log.txt" verwendet wird, ist, dass das System den Pfad nicht finden kann.

+0

Ich versuchte dieses genaue Skript mit 'dir' anstelle von' someprocess' und es hat gut funktioniert. Enthält der eingegebene Pfad den Laufwerksbuchstaben und keinen abschließenden Schrägstrich? – leetibbett

+0

Ich habe meine Frage bearbeitet. – user3813234

+0

Ich denke, ich habe es: Der Ordner wird durch den Prozess erstellt. Und der Vorgang benötigt etwas Zeit, um den Ordner zu erstellen. Und wenn ich> folder/log.txt mache, wurde der Ordner noch nicht erstellt ... Das ist es wahrscheinlich. – user3813234

Antwort

1

Verwenden Sie Anführungszeichen, falls Sie Leerzeichen im Pfad haben.

someprocess -p1 blabla -p2 blabla -p3 "%outputFolder%" > "%outputFolder%\log.txt" 
+0

Dies hat nicht funktioniert. Ich bekomme immer noch den gleichen Fehler. Und ich kann keine Leerzeichen im Pfad haben, da der Dateiname keine Leerzeichen enthält.Und ich verwende den Dateinamen als Ordnername. – user3813234

+0

Die Zitate sind sowieso gute Praxis ... – aschipfl

+1

Wahrscheinlich ist der Ordner nicht vorhanden. Was macht SomeProcess? Soll es den Ordner erstellen? Wenn nicht, MD "% OutFolder%" – RGuggisberg

0

%%~dpni wird die Variable erweitern Sie das Laufwerk, den Pfad und Dateinamen enthalten.