2in1 Datei Verarbeitung
Hallo, ich komme nicht weiter.
Ich möchte meine Batch so verändern, dass sie doppelt funktional läuft. Einmal per for /f Schleife wo Dateien eines Typs verarbeitet werden (zb. Umbenannt werden, funktioniert tadellos) und einmal nur für einzelner explizit ausgewählte Datei.
Die zu verarbeitende Datei wird dann per Drag & Drop auf die Batchdatei gezogen und so nur diese geändert.
Zweiter Punkt, kann man Die Bedingung auch per if not machen, so, dass man sich die goto erspart?
Meine versuchen sind irgendwie alle im Sande verlaufen
Dritter Punkt, kann man die for /f Schleife so verändern, dass die Verarbeitung außerhalb stattfindet, so, dass man den Code auch für die einzelne Datei Verarbeitung benutzten könnte (war jedenfalls meine erste Idee, wenn man etwas mehr zu verändern hat)?
Beispieldatei:
ABC_1234D.txt
ABC_12345X.txt
Danke für die Hilfe
Ich möchte meine Batch so verändern, dass sie doppelt funktional läuft. Einmal per for /f Schleife wo Dateien eines Typs verarbeitet werden (zb. Umbenannt werden, funktioniert tadellos) und einmal nur für einzelner explizit ausgewählte Datei.
Die zu verarbeitende Datei wird dann per Drag & Drop auf die Batchdatei gezogen und so nur diese geändert.
Zweiter Punkt, kann man Die Bedingung auch per if not machen, so, dass man sich die goto erspart?
Meine versuchen sind irgendwie alle im Sande verlaufen
Dritter Punkt, kann man die for /f Schleife so verändern, dass die Verarbeitung außerhalb stattfindet, so, dass man den Code auch für die einzelne Datei Verarbeitung benutzten könnte (war jedenfalls meine erste Idee, wenn man etwas mehr zu verändern hat)?
Beispieldatei:
ABC_1234D.txt
ABC_12345X.txt
@echo off & setlocal enabledelayedexpansion
cls
set "Verzeichnis=%~dp0"
set "Typ=txt"
pushd "%Verzeichnis%"
if [%1]== ( goto loop ) else (
set "DateiName=%~n1"
set NeueDateiName=!DateiName:~4,-1!
ren "%~n1" "!NeueDateiName!"
echo DateiName: !DateiName! ^> !NeueDateiName!
)
pause
goto :eof
:loop
for /F "delims=" %%i in ('dir /b /a-d "*.%Typ%"') do (
set "DateiName=%%~ni"
set NeueDateiName=!DateiName:~4,-1!
echo DateiName: !DateiName! ^> !NeueDateiName!
ren "%%i" "!NeueDateiName!%%~xi"
echo.
)
popd
pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 258897
Url: https://administrator.de/contentid/258897
Ausgedruckt am: 17.11.2024 um 15:11 Uhr
4 Kommentare
Neuester Kommentar
Moin,
z.B. so
Gruß jodel32
z.B. so
@echo off & setlocal
cls
set typ=txt
if [%1]== (
for %%i in ("%~dp0*.%Typ%") do (
call :process "%%i"
)
) else (
call :process "%~1"
)
pause
goto :eof
:process
set "DateiName=%~n1"
set "NeueDateiName=%DateiName:~4,-1%%~x1"
echo DateiName: %DateiName% ^> %NeueDateiName%
ren "%~1" "%NeueDateiName%"
goto :eof
Zitat von @batchnewbie:
Nachtrag: Verständnis-frage zu Zeile 16 das %~x1 steht für die Dateisuffix nehme ich an?
Ja.Nachtrag: Verständnis-frage zu Zeile 16 das %~x1 steht für die Dateisuffix nehme ich an?
Noch als Ergänzung, wenn du möchtest kannst du auch hiermit mehrere Dateien gleichzeitig auf die Batch ziehen
echo off & setlocal
cls
set typ=txt
if [%1]== (
for %%i in ("%~dp0*.%Typ%") do (
call :process "%%i"
)
) else (
:next
call :process "%~1"
shift
if "%~1" NEQ "" goto next
)
pause
goto :eof
:process
set "DateiName=%~n1"
set "NeueDateiName=%DateiName:~4,-1%%~x1"
echo DateiName: %DateiName% ^> %NeueDateiName%
ren "%~1" "%NeueDateiName%"
goto :eof