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-Key: 524704

Url: https://administrator.de/contentid/524704

Printed on: April 24, 2024 at 16:04 o'clock

Member: rubberman
Solution rubberman Dec 12, 2019 at 10:36:23 (UTC)
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
Member: cHr1s.dE
cHr1s.dE Dec 12, 2019 at 11:26:37 (UTC)
Goto Top
Getestet und es funktioniert!
Vielen Dank für die schnelle Hilfe!