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, 2188 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Hyper-V
gelöst Bestehende XP-Installation mit Hyper-V virtualisieren (30)

Frage von fox14ch zum Thema Hyper-V ...

Batch & Shell
gelöst Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen (3)

Frage von Booster07 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Verzeichnisse vergleichen mit Zwischenschritt (22)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...