
93578
29.09.2010, aktualisiert um 11:27:06 Uhr
Mehrere Dateinamen gleichzeitig ändern per Batch oder VBS ?
Hallo an alle!
Ich habe ein Verzeichnis mit mehreren Textdateien. Alle Dateien haben das gleiche Dateinamestruktur:
Hersteller_Produkt_Version_Sprache_Benutzer.txt
Also z.B.:
Adobe_Photoshop_CS4_deutsch_Otto.txt
Adobe_Dreamweaver_CS3_1_english_Marta.txt
Microsoft_Office_2010_Build_393_deutsch_Richard.txt
Apple_Quicktime_8_deutsch_Otto.txt
Nun brauche ich einen Batch-Script, welcher alle Dateinamen in diesem Ordner so ändert, dass Benutzer entfernt werden.
Also z.B:
Adobe_Photoshop_CS4_deutsch.txt
Adobe_Dreamweaver_CS3_1_english.txt
Microsoft_Office_2010_Build_393_deutsch.txt
Apple_Quicktime_8_deutsch.txt
Kann mir da jemand helfen? Ich denke so, dass Batch-Script einfach das letzte Wort in Dateienamen (zwischen _ und .txt) finden und löschen soll. Ich weiß es aber nicht, wie man so was realisieren kann.
Grüße,
Sergio
Ich habe ein Verzeichnis mit mehreren Textdateien. Alle Dateien haben das gleiche Dateinamestruktur:
Hersteller_Produkt_Version_Sprache_Benutzer.txt
Also z.B.:
Adobe_Photoshop_CS4_deutsch_Otto.txt
Adobe_Dreamweaver_CS3_1_english_Marta.txt
Microsoft_Office_2010_Build_393_deutsch_Richard.txt
Apple_Quicktime_8_deutsch_Otto.txt
Nun brauche ich einen Batch-Script, welcher alle Dateinamen in diesem Ordner so ändert, dass Benutzer entfernt werden.
Also z.B:
Adobe_Photoshop_CS4_deutsch.txt
Adobe_Dreamweaver_CS3_1_english.txt
Microsoft_Office_2010_Build_393_deutsch.txt
Apple_Quicktime_8_deutsch.txt
Kann mir da jemand helfen? Ich denke so, dass Batch-Script einfach das letzte Wort in Dateienamen (zwischen _ und .txt) finden und löschen soll. Ich weiß es aber nicht, wie man so was realisieren kann.
Grüße,
Sergio
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 151989
Url: https://administrator.de/forum/mehrere-dateinamen-gleichzeitig-aendern-per-batch-oder-vbs-151989.html
Ausgedruckt am: 23.04.2025 um 06:04 Uhr
7 Kommentare
Neuester Kommentar
Hallo Sergio,
abschließend kann ich Dir nicht helfen, aber vielleicht einen Ansatz
Ich habe es etwas ausführlicher geschrieben, damit deutlich wird, was das kleine Script macht.
Mit for /? oder Set /? kannst Du Dir jeweil die Hilfe ansehen und u. U. das Script etwas zusammenfassen, da die Set-Anweisungen nicht wirklich benötigt werden, sondern nur die Lesbarkeit erhöht.
Allerdings konnte ich auf die schnelle nicht das Problem der variablen Anzahl der _ lösen. Das Script funktioniert also wirklich nur bei 4 Unterstrichen, nicht aber bei dem Beispiel Microsoft_Office_......
Wenn es Dir doch eine Hilfe ist, mußt Du noch das "Echo" vor dem "Ren" löschen, da sonst nur eine Bildschirmausgabe der Umbenennung erfolgt.
Mit dieser Zeile
werden die Bildschirmausgaben in die Datei "WasWaereWenn.txt" umgeleitet und kannst prüfen, wie brauchbar das Script ist ....
Markus
abschließend kann ich Dir nicht helfen, aber vielleicht einen Ansatz
@echo off & setlocal
Set Verzeichnis=c:\tools\test\*.txt
for /f "delims=_ tokens=1-4*" %%a in ('dir %Verzeichnis% /s /b') do call :Machwas %%a %%b %%c %%d %%e
goto :eof
:Machwas
Set Hersteller=%1
Set Produkt=%2
Set Version=%3
Set Sprache=%4
Set Rest=%5
echo ren %Hersteller%_%Produkt%_%Version%_%Sprache%_%Rest% %Hersteller%_%Produkt%_%Version%_%Sprache%.txt
Ich habe es etwas ausführlicher geschrieben, damit deutlich wird, was das kleine Script macht.
Mit for /? oder Set /? kannst Du Dir jeweil die Hilfe ansehen und u. U. das Script etwas zusammenfassen, da die Set-Anweisungen nicht wirklich benötigt werden, sondern nur die Lesbarkeit erhöht.
Allerdings konnte ich auf die schnelle nicht das Problem der variablen Anzahl der _ lösen. Das Script funktioniert also wirklich nur bei 4 Unterstrichen, nicht aber bei dem Beispiel Microsoft_Office_......
Wenn es Dir doch eine Hilfe ist, mußt Du noch das "Echo" vor dem "Ren" löschen, da sonst nur eine Bildschirmausgabe der Umbenennung erfolgt.
Mit dieser Zeile
echo ren %Hersteller%_%Produkt%_%Version%_%Sprache%_%Rest% %Hersteller%_%Produkt%_%Version%_%Sprache%.txt >>WasWaereWenn.txt
Markus

Das wird wohl schwierig. Warum hast du denn keine einheitliche Namenskonvention dafür?
Hallo takitano!
Soferne es in den Dateinamen keine Leerzeichen gibt, könnte das (allerdings ungetestet) so gehen:
In der Zeile 10 wird der Name aufgeteilt, indem die "_" durch Leerzeichen ersetzt werden - damit kann dann in einer einfachen "
Dieser Variableninhalt besteht jetzt aber aus "_", dem Benutzernamen sowie der Endung (".txt") - daher wird in der nächsten Zeile im gesamten Namen dieser String nur durch die Endung (%~x1) ersetzt.
Grüße
bastla
Warum hast du denn keine einheitliche Namenskonvention dafür?
... der Frage schließe ich mich an ...Soferne es in den Dateinamen keine Leerzeichen gibt, könnte das (allerdings ungetestet) so gehen:
@echo off & setlocal
set "Verzeichnis=c:\tools\test"
pushd "%Verzeichnis%"
for /f "delims=" %%a in ('dir /b /a-d *.txt') do set "Name=%%a" & call :ProcessFile "%%a"
popd
goto :eof
:ProcessFile
for %%i in (%Name:_= %) do set "Benutzer=_%%i"
call set "NameNeu=%%Name:%Benutzer%=%~x1%%"
echo ren %1 "%NameNeu%"
goto :eof
for
"-Schleife jeder Bestandteil einzeln angesprochen und der Variablen %Benutzer% (samt vorhergehendem "_") zugewiesen werden. Dabei wird natürlich jeweils der vorhergehende Wert überschrieben, sodass am Ende eben der letzte Teil als Variableninhalt zur Verfügung steht.Dieser Variableninhalt besteht jetzt aber aus "_", dem Benutzernamen sowie der Endung (".txt") - daher wird in der nächsten Zeile im gesamten Namen dieser String nur durch die Endung (%~x1) ersetzt.
Grüße
bastla