Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Verzeichnisnamen aus Textfile lesen und bestehende Verzeichnisse umbenennen

Frage Entwicklung Batch & Shell

Mitglied: Armin1893

Armin1893 (Level 1) - Jetzt verbinden

12.08.2013 um 16:32 Uhr, 2198 Aufrufe, 14 Kommentare

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 :

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

Mitglied: Snowman25
12.08.2013 um 16:42 Uhr
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
Bitte warten ..
Mitglied: 112778
12.08.2013, aktualisiert um 16:50 Uhr
Hi,

Zitat von Armin1893:
Ist sowas mit einem DOS-Batch möglich und wenn ja, wie ?

Und täglich grüßt das Murmeltier......

Sieh einfach mal an das Ende des Threads oder verwende die Suche

Gruß
Bitte warten ..
Mitglied: Metzger-MCP
12.08.2013, aktualisiert um 17:43 Uhr
Hallo

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

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
Bitte warten ..
Mitglied: bastla
12.08.2013, aktualisiert um 21:04 Uhr
Hallo Armin1983!

Etwa so (ungetestet):
01.
@echo off & setlocal 
02.
set "Ordner=D:\Das Verzeichnis" 
03.
set "Datei=D:\Textfile Verzeichnisnamen.txt" 
04.
 
05.
for /d %%i in ("%Ordner%\*") do for /f "delims=" %%a in ('findstr "_%%~nxi_" "%Datei%"') do echo ren "%%i" "%%a" 2>nul 
06.
pause
Wegen des "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 ...
Bitte warten ..
Mitglied: Biber
12.08.2013, aktualisiert um 19:16 Uhr
[OT] @ bastla
Zitat von bastla:
Hallo Armin1983!
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]
Bitte warten ..
Mitglied: bastla
12.08.2013 um 21:04 Uhr
[OT too] @ Biber
Erwischt ...

Und wenn doch jede x-beliebige 0-Byte-Datei schon 16k auf den heutigen Festplatten belegt
... dann wäre es Zeit für die "convert.exe" ...

Grüße
bastla
[/OT too]
Bitte warten ..
Mitglied: kn0rki
12.08.2013 um 22:22 Uhr
Alles Powershell verweigerer hier? :D
Bitte warten ..
Mitglied: Metzger-MCP
13.08.2013 um 09:37 Uhr
Zitat von kn0rki:
Alles Powershell verweigerer hier? :D

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
Bitte warten ..
Mitglied: Armin1893
13.08.2013 um 09:40 Uhr
Hallo Bastla,

herzlichen Dank für Deine Lösung, funktioniert einfach perfekt !!!

Jetzt versuche ich es nur noch zu verstehen 8-) , gestaltet sich für mich jedoch schwierig...

Grundsätzlich bin ich überwältigt von der Kompetenz und der Hilfsbereitschaft in diesem Forum.

Danke nochmal und Grüsse
Armin
Bitte warten ..
Mitglied: Armin1893
13.08.2013 um 09:44 Uhr
hallo zusammen,

mein Dank geht selbstverständlich auch an alle anderen, die sich mit meinem Problem befasst haben.

Wie zuvor schon gesagt, bin ich wirklich überwältigt von der Kompetenz und Hilfsbereitschaft in diesem Forum.

Allen nochmal herzlichen Dank

Grüsse-Armin
Bitte warten ..
Mitglied: Metzger-MCP
13.08.2013 um 09:45 Uhr
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]

Leider noch nicht 1 Tag ;(
Bitte warten ..
Mitglied: colinardo
13.08.2013 um 09:53 Uhr
Zitat von kn0rki:
Alles Powershell verweigerer hier? :D
01.
$rootFolder = "C:\OrdnerIndemDeineOrdnerliegen" 
02.
$txtFile = "C:\DeinFileInDemDieDateinamenStehen.txt" 
03.
 
04.
foreach($zeile in gc $txtFile){ 
05.
    $foldername = $zeile.split("_")[2] 
06.
    if (test-path -Path "$rootFolder\$foldername"){ 
07.
        ren -Path "$rootFolder\$foldername" -NewName $zeile 
08.
09.
}
ohne Worte ...

Grüße Uwe
Bitte warten ..
Mitglied: bastla
13.08.2013, aktualisiert um 12:05 Uhr
Hallo Armin1893!

Kurze Erklärung:

Mit
for /d %%i in ("%Ordner%\*") do
werden alle Verzeichnisse des angegebenen Start-Ordners nacheinander in "%%i" (mit vollem Pfad) bereitgestellt.
findstr "_%%~nxi_" "%Datei%"
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 "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
Bitte warten ..
Mitglied: Armin1893
13.08.2013 um 11:09 Uhr
Hallo Bastla,

danke für Deine sehr schnelle, kurze, aber für mich sehr hilfreiche, verständliche Erklärung.

Jetzt versteh ich's einigermaßen.

Herzlichen Dank nochmal
Grüße-Armin
Bitte warten ..
Ähnliche Inhalte
Windows Server
Ordner umbenennen nicht möglich (8)

Frage von carbon1X zum Thema Windows Server ...

Batch & Shell
gelöst Batch Datei: PDF Dateien verschieben, umbenennen und löschen (4)

Frage von F0rcehunter zum Thema Batch & Shell ...

Windows Tools
Robocopy - ACL für übergeordnete Verzeichnisse bei Option -S

Frage von grefabu zum Thema Windows Tools ...

Windows Server
gelöst 2008 R2 Domäne mit Exchange 2010 SP3 umbenennen - welche Möglichkeiten bestehen? (12)

Frage von Excaliburx zum Thema Windows Server ...

Neue Wissensbeiträge
Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Exchange Server
Microsoft Exchange Weiterleitung mit anderer primären E-Mail Adresse (14)

Frage von Rene12345 zum Thema Exchange Server ...

Windows Userverwaltung
gelöst Wie verfahrt Ihr mit den Windows-Benutzerkonten und -dateien von ausgeschiedenen Mitarbeitern? (14)

Frage von Bl0ckS1z3 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Devolo DLAN 500 pro Wireless+ (13)

Frage von IceAge zum Thema LAN, WAN, Wireless ...

Microsoft
gelöst Subnetting: In welchem Subnetz befindet sich die IP? (12)

Frage von winler zum Thema Microsoft ...