Wort via Batch aus Dateinamen entfernen
Hallo an alle,
ich wollte mir auf die Schnelle ein Batch-File erstellen, das aus einem Dateinamen ein bestimmtes Wort entfernt.
Leider hatte ich mit Batch noch nie viel am Hut, das letzte mal vor ein paar Jahren.
Ich habe zum Testen 3 Dateien:
Test Eins.txt
Test Zwei.txt
Test Drei.txt
Ziel ist, das "Test" aus dem Dateinamen zu entfernen.
Mein Script:
For %%i in (*.txt) do set iinput=%%i
set string=%iinput:Test =%
rename "%iinput%" "%string%"
pause
Funktionieren tut es, "Test Zwei.txt" wird in "Zwei.txt" Umbenannt, die anderen Dateien aber nicht. Man sieht im CMD Fenster das er erst alle Dateien durch geht und nur die letzte Datei umbenennt.
Was muss ich ändern oder Hinzufügen damit er ALLE Dateien mit einem "Test" am Anfang und einem ".txt" am Ende umbenennt?
Über ein Fertiges Script würde ich mich sehr freuen!
Ich weiß das viele es nicht leiden können, da man ja aus der Frage lernen soll. Ich arbeite aber sonst nie mit Batch, ich brauche nur eine Simple Lösung um meine Dateien Umzubenennen.
Vielen Dank im voraus!
ich wollte mir auf die Schnelle ein Batch-File erstellen, das aus einem Dateinamen ein bestimmtes Wort entfernt.
Leider hatte ich mit Batch noch nie viel am Hut, das letzte mal vor ein paar Jahren.
Ich habe zum Testen 3 Dateien:
Test Eins.txt
Test Zwei.txt
Test Drei.txt
Ziel ist, das "Test" aus dem Dateinamen zu entfernen.
Mein Script:
For %%i in (*.txt) do set iinput=%%i
set string=%iinput:Test =%
rename "%iinput%" "%string%"
pause
Funktionieren tut es, "Test Zwei.txt" wird in "Zwei.txt" Umbenannt, die anderen Dateien aber nicht. Man sieht im CMD Fenster das er erst alle Dateien durch geht und nur die letzte Datei umbenennt.
Was muss ich ändern oder Hinzufügen damit er ALLE Dateien mit einem "Test" am Anfang und einem ".txt" am Ende umbenennt?
Über ein Fertiges Script würde ich mich sehr freuen!
Ich weiß das viele es nicht leiden können, da man ja aus der Frage lernen soll. Ich arbeite aber sonst nie mit Batch, ich brauche nur eine Simple Lösung um meine Dateien Umzubenennen.
Vielen Dank im voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 190924
Url: https://administrator.de/forum/wort-via-batch-aus-dateinamen-entfernen-190924.html
Ausgedruckt am: 06.05.2025 um 03:05 Uhr
2 Kommentare
Neuester Kommentar

Moin,
Nein......
Wenn du was fertiges suchst, dann suche bitte danach, das gibt es in jeder farbe und koerbchengroesse
Auch ein tut zum schleifenbinden gibts hier.
Ps du hast es doch erkannt, das ist wie mathe, punkt vor strich oder zeile fuer zeile (ausser man verlaengert die zeile durch () eine klammer)
Also genauso wie bei der mathematik auch.
Gruss
Nein......
Wenn du was fertiges suchst, dann suche bitte danach, das gibt es in jeder farbe und koerbchengroesse
Auch ein tut zum schleifenbinden gibts hier.
Ps du hast es doch erkannt, das ist wie mathe, punkt vor strich oder zeile fuer zeile (ausser man verlaengert die zeile durch () eine klammer)
Also genauso wie bei der mathematik auch.
Gruss
Hi,
Dein Script arbeitet in der For Schleife nur einen Befehl ab, nämlich set iinput=%%i. Deine anderen Befehle liegen außerhalb der Schleife und werden nur einmal abgearbeitet. Mit der letzten gefundenen Datei.
Wenn Deine Schleife mehrere Befehle abarbeiten soll, müsstest Du die Befehle in Klammern setzen.
Das Script würde aber so auch scheitern, weil Variablen innerhalb einer Schleife nur dann einen neu zugewiesenen Wert verarbeiten, wenn setlocal enabledelayedexpansion gesetzt ist. Spätestens in Zeile 3 gäbe es da Probleme. Einfacher wäre dies hier. In der Schleife lesen. Außerhalb der Schleife arbeiten.
LG aus HH
Leo
Dein Script arbeitet in der For Schleife nur einen Befehl ab, nämlich set iinput=%%i. Deine anderen Befehle liegen außerhalb der Schleife und werden nur einmal abgearbeitet. Mit der letzten gefundenen Datei.
Wenn Deine Schleife mehrere Befehle abarbeiten soll, müsstest Du die Befehle in Klammern setzen.
For %%i in (*.txt) do (
set iinput=%%i
set string=%iinput:Test =%
rename "%iinput%" "%string%"
)
Das Script würde aber so auch scheitern, weil Variablen innerhalb einer Schleife nur dann einen neu zugewiesenen Wert verarbeiten, wenn setlocal enabledelayedexpansion gesetzt ist. Spätestens in Zeile 3 gäbe es da Probleme. Einfacher wäre dies hier. In der Schleife lesen. Außerhalb der Schleife arbeiten.
@echo off
for /f "delims=" %%i in ('dir /B *.txt') do call :umbenennen "%%~i"
goto :eof
:umbenennen
set alter_name=%1
set neuer_name=%alter_name: test=%
rename %alter_name% %neuer_name%
goto :eof
LG aus HH
Leo