chr1s.de
Goto Top

Token in FOR Schleife abschneiden

Hallo zusammen,
ich haben folgendes vor. Anhand einer Datei mit dem Name A100-B200-C300-D400.jpg sollen Ordner über Token erstellt werden und diese in den untersten Ordner kopiert werden. Der "-" gilt dabei als Trennzeichen.
Dies funktioniert bereits. Es wird der Ordnerpfad \A100\B200\C300\D400\ erstellt, wenn dieser nicht exisitert und die Datei in den Ordner D400 kopiert.

Nun benötige ich vom 4. Token (D400) jedoch nicht den kompletten Namen sondern nur das erste Zeichen (in diesem Fall "D")

Die Anpassung des Tokens hat nicht funktioniert, ebenso wenig habe ich es hinbekommen, das Token als Variable zu setzen und diesen zu formatieren.

Hier mein bisheriger Code:

@echo off

set src=Quelle
set dst=Ziel
set ext=*.jpg

for %%i in ("%src%\%ext%") do (  
  for /f "tokens=1,2,3,4 delims=-" %%j in ("%%~ni") do (  

   	if not exist "%dst%\%%j\%%k\%%l\%%m" md "%dst%\%%j\%%k\%%l\%%m"  
	copy "%%~i" "%dst%\%%j\%%k\%%l\%%m\"  
 )
)

Gibt es eine Möglichkeit bzw. Vorschläge wie ich es realisieren kann, den 4. Token "zu beschneiden"???

Content-ID: 524704

Url: https://administrator.de/forum/token-in-for-schleife-abschneiden-524704.html

Ausgedruckt am: 11.04.2025 um 20:04 Uhr

rubberman
Lösung rubberman 12.12.2019 um 11:36:23 Uhr
Goto Top
Du kannst mit verzögerter Variablenerweiterung und mit normaler Stringmanipulation arbeiten.
Ungetestet:
@echo off

set "src=Quelle"  
set "dst=Ziel"  
set "ext=*.jpg"  

for %%i in ("%src%\%ext%") do (  
  for /f "tokens=1-4 delims=-" %%j in ("%%~ni") do (  
    set "file=%%~i"  
    set "new_path=%dst%\%%j\%%k\%%l"  
    set "fourth=%%m"  
    setlocal EnableDelayedExpansion
    if not exist "!new_path!\!fourth:~,1!\" md "!new_path!\!fourth:~,1!"  
    copy "!file!" "!new_path!\!fourth:~,1!\"  
    endlocal
  )
)
Steffen
cHr1s.dE
cHr1s.dE 12.12.2019 um 12:26:37 Uhr
Goto Top
Getestet und es funktioniert!
Vielen Dank für die schnelle Hilfe!