t22wbd
Goto Top

IF ELSE mit EQU

Hallo Zusammen.

Irgendwie habe ich ein Knoten im Kopf. Bestimmt findet jemand meinen Fehler im nachfolgenden Script.
Zunächst aber meinen Ausgangspunkt:

Ich habe einen Order, wo viele Bilder vorliegen. Die Bezeichnungen dieser Dateien beginnen entweder mit einem "A" oder mit einem "$" oder eben mit keinem dieser Präfixe.

Diese sollen nun in einem Verzeichnis verschoben werden (Jahr/Monat), da Sie auch je nach Präfix unterschiedlich lange Bezeichungen haben.

Beispiel:
$123456789-20220104.jpg
$234567890-20220104.jpg
A12345-20220104.jpg
A23456-20220104.jpg
1234567-20220104.jpg
0123456-20220104.jpg

Ich möchte also prüfen, welches Präfix vorliegt (IF ==), um dann mit GOTO auf die richtge MOVE-Action zuweisen zu können.

Aber irgendwie klappt das mit dem "IF ELSE" nicht so ganz.

Viele Grüße

@echo off &setlocal 

set "dest=U:\Z-TESTUMGEBUNG\Server"  
set "src=U:\Z-TESTUMGEBUNG\Uebergabe\*"  

:START
:: ==================================================================================

@echo.call :Move_Bilder
call :Move_Bilder


:Move_Bilder
for /f "tokens=1-3*" %%i in ('dir /a-d /tc "%src%.jpg"^|findstr /vbc:" "') do   
( 

 set "fname=%%l"     
 setlocal EnableDelayedExpansion    


REM Hier kürze ich den Namen auf 1-Stelle, um später den Vergleich zu machen
 Set "kname=!fname:~0,1!"   
 echo !kname!

if !kname!=="A" (  
			    goto AL
			     ) else (
					if !kname!=="$" (  
								    goto DOL
								    )
                           )

REM md %dest%\!fname:~9,-15! 2>nul
Echo Verschiebe Datei %%l nach %dest%\!fname:~9,-15!
REM move %%l %dest%\!fname:~9,-15!\!fname:~9,-15!

echo -------------------------------------------- 
)
goto :ENDE

REM ##################################################
:AL

 echo !fname!
 
REM md %dest%\!fname:~10,-15! 2>nul
Echo Verschiebe Datei %%l nach %dest%\!fname:~10,-15!
REM move %%l %dest%\!fname:~9,-15!\!fname:~10,-15!

	

goto :ENDE

REM ##################################################
:DOL

echo  !fname!

REM md %dest%\!fname:~14,-15! 2>nul
Echo Verschiebe Datei %%l nach %dest%\!fname:~13,-13!
REM move %%l %dest%\!fname:~9,-15!\!fname:~13,-13!

goto :ENDE

REM ##################################################
:ENDE

endlocal 
COLOR 0A
Echo fertig !!
Pause

Content-ID: 5210354157

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

Ausgedruckt am: 24.11.2024 um 01:11 Uhr

T22WBD
T22WBD 12.01.2023 um 12:58:04 Uhr
Goto Top
Vermutlich ist mein Problem nicht verständlich ausformuliert.
Ich möchte das mal splitten, um meinen Fehler zu verstehen:

IF ELSE

Hier möchte ich in dem Verzeichnis die Dateien mir dem Anfangsbuchstaben "A" anders verschieben, als die Dateien mit dem Anfangsbuchstaben "$" bzw. die restlichen DAteien auch noch aml anders verschieben.

Mein Code ist doch soweit richtig, oder?

Verzeichnis:
$123456789-20220104.jpg
$234567890-20220104.jpg
A12345-20220104.jpg
A23456-20220104.jpg
1234567-20220104.jpg
0123456-20220104.jpg

if !kname!=="A" (goto AL)   
                      else (if !kname!=="$" (goto DOL)  
                             )
move rest

:AL
Move AL .......

:DOL
Move $ ....
T22WBD
Lösung T22WBD 16.01.2023 um 06:47:31 Uhr
Goto Top
Ich habe es nun anders gelöst.

:Move_Bilder A
for /f "tokens=1-3*" %%i in ('dir /a-d /tc "%src%.a*jpg"^|findstr /vbc:" "') do

:Move_Bilder $
for /f "tokens=1-3*" %%i in ('dir /a-d /tc "%src%.$*jpg"^|findstr /vbc:" "') do

:Move_Bilder
for /f "tokens=1-3*" %%i in ('dir /a-d /tc "%src%.jpg"^|findstr /vbc:" "') do

etc..