Verzeichnisnamen aus Textfile lesen und bestehende Verzeichnisse umbenennen
Hallo zusammen,
Ich habe sehr viele Dateien in sehr vielen Unterordnern mit temporären Verzeichnisnamen und ein Textfile mit den realen, gültigen Verzeichnisnamen. Nun sollen die gültigen Verzeichnisnamen aus dem Textfile gelesen, dem temporären Unterverzeichis zugeordnet und diese Unterverzeichnisse mit den gültigen Verzeichisnamen umbenannt werden.
Die Verzeichnisstruktur mit den temporären Unterverzeichnissen sieht folgendermaßen aus :
Das Textfile mit den gültigen Verzeichnisnamen sieht folgendermaßen aus :
Nun soll das Textfile gelesen, mit dem Teilstring ab einer bestimmten Stelle und Länge das entsprechende, bestehende Verzechnis umbenannt werden. Im beschriebenen Fall sollen also die Verzeichnisse folgendermaßen umbenannt werden
Ist sowas mit einem DOS-Batch möglich und wenn ja, wie ?
Freu mich über jeden Lösungsansatz
Grüsse - Armin
Ich habe sehr viele Dateien in sehr vielen Unterordnern mit temporären Verzeichnisnamen und ein Textfile mit den realen, gültigen Verzeichnisnamen. Nun sollen die gültigen Verzeichnisnamen aus dem Textfile gelesen, dem temporären Unterverzeichis zugeordnet und diese Unterverzeichnisse mit den gültigen Verzeichisnamen umbenannt werden.
Die Verzeichnisstruktur mit den temporären Unterverzeichnissen sieht folgendermaßen aus :
0001
0002
0003
Das Textfile mit den gültigen Verzeichnisnamen sieht folgendermaßen aus :
XYZ_ABC_0001_DAS_GUELTIGE_VERZEICHNIS
XYZ_ABC_0002_DAS_GUELTIGE_VERZEICHNIS
XYZ_ABC_0003_DAS_GUELTIGE_VERZEICHNIS
Nun soll das Textfile gelesen, mit dem Teilstring ab einer bestimmten Stelle und Länge das entsprechende, bestehende Verzechnis umbenannt werden. Im beschriebenen Fall sollen also die Verzeichnisse folgendermaßen umbenannt werden
0001 wird XYZ_ABC_0001_DAS_GUELTIGE_VERZEICHNIS
0002 wird XYZ_ABC_0002_DAS_GUELTIGE_VERZEICHNIS
0003 wird XYZ_ABC_0003_DAS_GUELTIGE_VERZEICHNIS
Ist sowas mit einem DOS-Batch möglich und wenn ja, wie ?
Freu mich über jeden Lösungsansatz
Grüsse - Armin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 214056
Url: https://administrator.de/contentid/214056
Ausgedruckt am: 26.11.2024 um 04:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo @Armin1893,
Ja, das sollte möglich sein. Allerdings wirst du dir meiner Meinung nach leichter tun, wenn du das in VBS (MS) oder AHK (non-MS) machst.
Gruß,
@Snowman25
Ja, das sollte möglich sein. Allerdings wirst du dir meiner Meinung nach leichter tun, wenn du das in VBS (MS) oder AHK (non-MS) machst.
Gruß,
@Snowman25
Hi,
Und täglich grüßt das Murmeltier......
Sieh einfach mal an das Ende des Threads oder verwende die Suche
Gruß
Und täglich grüßt das Murmeltier......
Sieh einfach mal an das Ende des Threads oder verwende die Suche
Gruß
Hallo
Hm glaub ich nicht ;)
Frag mal de Biber ... da wird dir aber einer geBATCHeld ... und das ist nicht schwer !!! ;)
je nachdem was du alles an Informationen hast, ist das ein Biber 1-2 Zeiler
Zum Problem leider sind deine Aussagen nicht aussagekräftig genug um dir da was passendes zu basteln
Wie liegen die Daten denn da ?
Über wie viele Ebenen sprechen wir den hier ?
Gibt es ein Quellverzeichnis oder muss man mit dem Baum arbeiten ?
Wie liegen die Daten denn aufbereitet vor als ?
Gibt es eine Struktur oder ist da alles Kraut und Rüben ... wie sind die Daten in der "" Textdatei "" aufbereitet...
zur Lösung brauchst du auf jedenfall
for
variablen
ren
eventuell auch ein move
Massenänderungen sind hier schon wirklich oft diskutiert worden mit Batchdatein
MFG Uwe
Zitat von @Snowman25:
Hallo @Armin1893,
Ja, das sollte möglich sein. Allerdings wirst du dir meiner Meinung nach leichter tun, wenn du das in VBS (MS) oder AHK
(non-MS) machst.
Gruß,
@Snowman25
Hallo @Armin1893,
Ja, das sollte möglich sein. Allerdings wirst du dir meiner Meinung nach leichter tun, wenn du das in VBS (MS) oder AHK
(non-MS) machst.
Gruß,
@Snowman25
Hm glaub ich nicht ;)
Frag mal de Biber ... da wird dir aber einer geBATCHeld ... und das ist nicht schwer !!! ;)
je nachdem was du alles an Informationen hast, ist das ein Biber 1-2 Zeiler
Zum Problem leider sind deine Aussagen nicht aussagekräftig genug um dir da was passendes zu basteln
Wie liegen die Daten denn da ?
Über wie viele Ebenen sprechen wir den hier ?
Gibt es ein Quellverzeichnis oder muss man mit dem Baum arbeiten ?
Wie liegen die Daten denn aufbereitet vor als ?
Gibt es eine Struktur oder ist da alles Kraut und Rüben ... wie sind die Daten in der "" Textdatei "" aufbereitet...
zur Lösung brauchst du auf jedenfall
for
variablen
ren
eventuell auch ein move
Massenänderungen sind hier schon wirklich oft diskutiert worden mit Batchdatein
MFG Uwe
Hallo Armin1983!
Etwa so (ungetestet):
Wegen des "
Grüße
bastla
P.S.: @ Metzger-MCP: Ließe sich natürlich auch auf eine Zeile reduzieren ...
Etwa so (ungetestet):
@echo off & setlocal
set "Ordner=D:\Das Verzeichnis"
set "Datei=D:\Textfile Verzeichnisnamen.txt"
for /d %%i in ("%Ordner%\*") do for /f "delims=" %%a in ('findstr "_%%~nxi_" "%Datei%"') do echo ren "%%i" "%%a" 2>nul
pause
echo
" vor dem "ren
" werden die Befehle zum Umbenennen (zum Testen) nur angezeigt ...Grüße
bastla
P.S.: @ Metzger-MCP: Ließe sich natürlich auch auf eine Zeile reduzieren ...
[OT] @ bastla
Hmm, der Armin1983 ist vielleicht der Ur-Ur-Enkel vom Beitragsersteller, aber diesmal hast du den falschen Addressaten...
Und wenn doch jede x-beliebige 0-Byte-Datei schon 16k auf den heutigen Festplatten belegt - selbst ein Songtext von Katy Perry würde soviel zugewiesen bekommen.
Dann ist es schon okay mit einem mehrzeiligen Batch-Epos für diese Umbenamserei.
Außerdem: Der TO braucht ihn ja nicht komplett an einem Tag zu lesen...
Grüße
Biber
P.S. @ All: Warum reagiert ihr denn so angefressen bei den Murmeltier-Fragen?
Ihr hattet doch schon Urlaub.... ;-(
[/OT]
Hmm, der Armin1983 ist vielleicht der Ur-Ur-Enkel vom Beitragsersteller, aber diesmal hast du den falschen Addressaten...
P.S.: @ Metzger-MCP: Ließe sich natürlich auch auf eine Zeile reduzieren ...
Aber Inline-Kommentare in einer Batch-Zeile sind nicht wirklich schön....Und wenn doch jede x-beliebige 0-Byte-Datei schon 16k auf den heutigen Festplatten belegt - selbst ein Songtext von Katy Perry würde soviel zugewiesen bekommen.
Dann ist es schon okay mit einem mehrzeiligen Batch-Epos für diese Umbenamserei.
Außerdem: Der TO braucht ihn ja nicht komplett an einem Tag zu lesen...
Grüße
Biber
P.S. @ All: Warum reagiert ihr denn so angefressen bei den Murmeltier-Fragen?
Ihr hattet doch schon Urlaub.... ;-(
[/OT]
Moin
hörma nööööö
es war aber nach Batch gefragt ;) und batch != PS ..... hi hi
MFG Uwe
- kann wegen Nichtigkeit gelöscht werden aber wegen Fragenbeantwortung sollte es bleiben
Zitat von @Biber:
Grüße
Biber
P.S. @ All: Warum reagiert ihr denn so angefressen bei den Murmeltier-Fragen?
Ihr hattet doch schon Urlaub.... ;-(
[/OT]
Grüße
Biber
P.S. @ All: Warum reagiert ihr denn so angefressen bei den Murmeltier-Fragen?
Ihr hattet doch schon Urlaub.... ;-(
[/OT]
Leider noch nicht 1 Tag ;(
$rootFolder = "C:\OrdnerIndemDeineOrdnerliegen"
$txtFile = "C:\DeinFileInDemDieDateinamenStehen.txt"
foreach($zeile in gc $txtFile){
$foldername = $zeile.split("_")[2]
if (test-path -Path "$rootFolder\$foldername"){
ren -Path "$rootFolder\$foldername" -NewName $zeile
}
}
Grüße Uwe
Hallo Armin1893!
Kurze Erklärung:
Mit
werden alle Verzeichnisse des angegebenen Start-Ordners nacheinander in "%%i" (mit vollem Pfad) bereitgestellt.
sucht anhand des Namens "%%~ni" und der Endung "%%~xi" (vorsichtshalber - falls im Namen Punkte vorhanden wären, würde alles nach dem letzten Punkt als Extension betrachtet), zusammen dann "%%~nxi", zur Sicherheit noch eingerahmt durch die Trennzeichen "_" vor und nach dem Namen, in der Textdatei nach der passenden Zeile (sollte möglichst nur eine sein).
Um das Ergebnis weiterverarbeiten (= in eine Variable bekommen) zu können, wird um diese Suche die "
Das abschließende "
Wenn Du das genauer sehen willst, brauchst Du eigentlich nur aus "
Grüße
bastla
Kurze Erklärung:
Mit
for /d %%i in ("%Ordner%\*") do
findstr "_%%~nxi_" "%Datei%"
Um das Ergebnis weiterverarbeiten (= in eine Variable bekommen) zu können, wird um diese Suche die "
for /f
"-Schleife herumgelegt, welche dann in "%%a" die gefundene Zeile = den gefundenen neuen Namen liefert.Das abschließende "
2>nul
" dient dazu, Fehlermeldungen zu unterdrücken und kann natürlich auch weggelasen werden.Wenn Du das genauer sehen willst, brauchst Du eigentlich nur aus "
echo off
" ein "echo on
" zu machen - dann wird jeder einzelne Befehl vor seiner Ausführung erst einmal angezeigt ...Grüße
bastla