Batch Dateipfad zerlegen (Parameter)

einfachtoll

Cadet 4th Year
Registriert
Juli 2007
Beiträge
89
Hallo,

ich habe eine Batch-Datei, diese bekommt als Parameter einen Pfad übergeben

Code:
set CSVPFAD=%1

Dieser Pfad verweist auf eine CSV-Datei. Ich möchte nun den Dateipfad in 2 Parameter zerlegen.

Also:

Code:
set CSVORDNER = C:\Ordner\
set CSVDATEI = Datei

Kann mir jemand sagen, wie ich den Pfad in 2 Parameter aufteilen kann?

Das funktioniert lieder nicht:

Code:
FOR /f "tokens=* delims=." %%i in ("%~1") do (
set NEUERPFAD = %~pi
set DATEI = %~ni
pause

Danke und viele Grüße
 
for /?
Code:
Zus�tzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie k�nnen jetzt folgende Syntax verwenden:

    %~I         - Expandiert %I und entfernt alle umschlie�enden 
                   Anf�hrungszeichen (").
    %~fI        - Expandiert %I zu einem vollst�ndigen Dateinamen.
    %~dI        - erstellt nur den Laufwerkbuchstaben von %I.
    %~pI        - erstellt nur den Pfad von %I.
    %~nI        - erstellt nur den Dateinamen von %I.
    %~xI        - erstellt nur die Dateierweiterung von %I.
    %~sI        - erstellter Pfad enth�lt nur kurze Dateinamen.
    %~aI        - erstellt die Dateiattribute von %I.
    %~tI        - erstellt Datum und Zeit von %I.
    %~zI        - erstellt die Dateigr��e von %I.
    %~$PATH:I   - Durchsucht die in der PATH-Umgebungsvariablen
                   angegebenen Verzeichnisse und expandiert die erste
                   gefundene Datei %I zu dem vollst�ndigen Dateinamen.
                   Wenn der Name der Umgebungsvariablen nicht definiert
                   ist oder diese Datei bei der Suche nicht gefunden wurde,
                   wird dieser Parameter zu einer leeren Zeichenfolge
                   expandiert.
Sorry für die Umlaute...
 
Danke, das hatte ich schon gelesen, jetzt ist halt die Frage wieso funktioniert das bei mir nicht?
 
for /?
Code:
Um den FOR-Befehl in einem Batchprogramm zu verwenden, geben Sie %%Variable
statt %Variable an. Beachten Sie die Gro�-/Kleinschreibung bei Variablen-
namen, %i und %I sind nicht identisch.
;)

Demnach muss es auch
Code:
set NEUERPFAD = %%~pi
set DATEI = %%~ni
heißen, denn du befindest dich dort eben in jener Schleife.
 
Ja danke für den Hinweis, aber irgendwie funktioniert das trotzdem nicht :(

"Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters ist ungültig: %~pI"
 
Hi,
vielleicht so:
Code:
For /f "delims=\ tokens=1,2,3" %i in ("C:\Windows\Resources") do @echo [Ausgabe] %i %j %k
Hier der Org. Beitrag.
 
Probiers mal so:

for /R "C:\Ordner\" %%i IN (*.*) DO (call :work "%%i")

:work

for /f %%A in ("%~1") do set "DATEI=%%~nxi"
for /f %%A in ("%~1") do set "NEUERPFAD=%%~dpi

echo %DATEI%
echo %NEUERPFAD%
 
Zuletzt bearbeitet:
Danke, funktioniert jetzt so:

Code:
For /f "delims=/ tokens=1,2" %%i in ("%1") do (
set "LAUFWERK=%%~di"
set "NEUERPFAD=%%~pi"
set "DATEI=%%~ni"
)
echo %LAUFWERK%
echo %NEUERPFAD%
echo %DATEI%

Erhalte damit folgende Ausgabe

Code:
C:
\Ordner\Ordner\Ordner
Datei

Seltsamerweise erhalte ich aber immernoch diese Fehlermeldung:
"Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters ist ungültig: %~pI"

Scheinbar ist der Fehler noch irgendwo anders :freaky:
 
Hallo nochmal,

aktuell habe ich das Problem, das mein Pfad, falls er Leerzeichen enthält, nicht korrekt zerlegt wird.
Bei folgendem Pfad "D:\Ordner1\Ord ner2\Ordner3\Ordner4\Datei.csv"
sieht das ganze so aus:
Pfad = "D:\Ordner1\
Datei = "Ord"

eigentlich sollte es aber so aussehen:
Pfad = "D:\Ordner1\Ord ner2\Ordner3\Ordner4\"
Datei = "Datei"

Alle Pfade sind in Hochkommas gesetzt.
Hat jemand eine Idee?

Danke
Grüße
 
Mach mal ein
Code:
For /f "tokens=1,2 delims=" %%i in ("%1") do (
draus. Ich schätze er schließt das Leerzeichen als Trenner mit ein.
 
Zurück
Oben