Top-Themen

Aktuelle Themen (A bis Z)

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 Dateinamen ändern

Mitglied: Thorsten90

Thorsten90 (Level 1) - Jetzt verbinden

21.07.2013, aktualisiert 13:47 Uhr, 2599 Aufrufe, 8 Kommentare, 1 Danke

Hallo

Ich habe eine Batch-Datei um Unterordner in einzelne rar-Archive zu packen:

01.
for /d %%i in ("%dir%\*") do ( 
02.
    for /d %%j in ("%%i") do ren "%%j\*.cbr" *.rar >NUL 2>&1 
03.
    for /d %%j in ("%%i\*") do rar a -r -o- -ep1 -inul "%%~dpj%%~nxi_-_%%~nxj.rar" "%%j" 
04.
    for /d %%j in ("%%i") do ren "%%j\*.rar" *.cbr >NUL 2>&1 
05.
    echo %%i verarbeitet 
06.
)
Der Name der rar ist dabei immer Ordner-Unterordner.rar.
Die Unterordner haben verschiedene Namen. Einige sind einfach nur (teils dezimale) Zahlen, andere enthalten Text, entweder in der Form text_zahl oder buchschabeZahl (direkt hintereinander, ohne Leerzeichen oder Unterstrich).

Um dies Archive weiter zu verarbeiten muss der Dateiname mit über einen Regulären Ausdruck verarbeitet werden. Allerdings funktioniert dies nicht, da die Zahl am Ende des Namens nicht richtig abgetrennt ist.

Kann man die Batch so anpassen, dass die Zahl (unschiedlich viele Ziffern, manche dezimal mit . ) durch einen zusätzlichen Bindestrich abgetrennt wird?

Grüße

ps: Der Name muss angeasst werden, bevor die rar-Datei erstellt wird, da die Batch später zum aktuallisieren erneut verwendet werden soll und die Archive sonst doppeerstellt werden würden.
Mitglied: Endoro
21.07.2013, aktualisiert um 15:35 Uhr
Hallo Thorsten,
etwas mehr Erklärung wär klasse. Ich seh' keine Zahlen (mag an der Hitze liegen)
lg
Bitte warten ..
Mitglied: Thorsten90
21.07.2013, aktualisiert um 15:59 Uhr
Hi

Mein Verzeichnis sieht so aus


Hauptverzeichnis
    1. Ordner_1
        1. Unterordner_1
        2. Unterordner_2
        3. Unterordner_3
        4. Ordner_1-Unterordner_1.rar
        5. Ordner_1-Unterordner_2.rar
        6. Ordner_1-Unterordner_3.rar
    2. Ordner_2
        1. Unterordner1
        2. Unterordner2
        3. Unterordner3
        4. Ordner_2-Unterordner1.rar
        5. Ordner_2-Unterordner2.rar
        6. Ordner 2-Unterordner3.rar
    3. Ornder_3
        1. Unterordner_1
        2. Unterordner_2
        3. Unterordner_3
        4. Ordner_3-Unterordner_1.rar
        5. Ordner_3-Unterordner_2.rar
        6. Ordner_3-Unterordner_3.rar


Dabei sind die Namen der Ordner und Unterordner verschieden lang, enthalten teilweise Unterstriche und auch Zahlen. Aber der Name der Unterordner endet immer mit ein Zahl. Diese Zahl ist teilweise dezimal, also sowas wie ...3.4 .ext . Auch die länge ist unterschiedlich, mal sind die Zahlen einstellig, mal zoder dreistellig, etc. Und wie im Ordner_2 gezeigt ist die Zahl auch nicht immer mit einem Unterstrich abgetrennt.

Und was ich gerne hätte ist vor dieser Zahl einen Bindestrich, der sie vom Rest trennt, damit ich den Dateinamen verarbeiten kann. Momentan erkennt der reguläre Ausdruck die Länge der Zahl nicht richtig und nimmt einige Ziffern zum davorstehenden Namen.
Bitte warten ..
Mitglied: Endoro
21.07.2013 um 17:43 Uhr
Zitat von Thorsten90:
Momentan erkennt der reguläre Ausdruck die Länge der Zahl nicht richtig und nimmt einige Ziffern zum
davorstehenden Namen.

Das ist ein merkwürdiger regulärer Ausdruck.
Also mit Regex ist die Trennung einer Zeichenkette an der Grenze Buchstabe/Ziffer eigentlich einfacher als mit Batch.
Könnte man dort ansetzen und den Regex-Ausdruck verbessern?

lg
Bitte warten ..
Mitglied: Thorsten90
21.07.2013 um 22:55 Uhr
Das war auch mein erster Gedanke. Die Dateien um die es geht, sind Comic-Archive. Die sollen dann mit dem Programm Calibre verwaltet werden. Das ist ein Programm um ebooks zu verwalten.

Der Ausdruck sieht so aus:

(?P<series>[^_]*)-(?P<title>[^_.]*)(?P<series_index>\d+.*)


Ich habe den Ausdruck ihn in vier Foren, die sich speziell mit Calibre beschäftigen, gepostet, da ich selber im Internet nichts gefunden habe, das hilft. Ohne die Trennung erkennt der Ausdruck nur zwei Ziffern und betrachtet den Rest als Teil des Titels. In den ver Foren habe ich bisher nur eie Antwort bekommen, die nicht funktioniert hat, daherdachte ich mir, ich versuche es mal über die Batch.
Bitte warten ..
Mitglied: Endoro
22.07.2013, aktualisiert um 00:49 Uhr
Die Calibre-Regex konnte ich nicht testen.
Deshalb ein Vorschlag mit sed:

>for /f "delims=" %a in ('dir /b/a-d/s *.rar') do @echo %~fa|sed -r "s/.*\\([^\]*[[:alpha:]_ -]+\.*)([0-9][0-9.]*.rar)$/echo ren \"^&\" \"\1-\2\"/e" 
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner 10.1.rar" "Ordner_1-Unterordner -10.1.rar" 
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner.10.1.rar" "Ordner_1-Unterordner.-10.1.rar" 
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner1.1.rar" "Ordner_1-Unterordner-1.1.rar" 
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner10.1.rar" "Ordner_1-Unterordner-10.1.rar" 
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner_1.rar" "Ordner_1-Unterordner_-1.rar" 
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_1\Ordner_1-Unterordner_10.1.rar" "Ordner_1-Unterordner_-10.1.rar" 
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_2\Ordner_1-Unterordner_2.rar" "Ordner_1-Unterordner_-2.rar" 
ren "C:\Hauptverzeichnis\Ordner_1\Unterordner_3\Ordner_1-Unterordner_3.rar" "Ordner_1-Unterordner_-3.rar" 
ren "C:\Hauptverzeichnis\Ordner_2\Unterordner1\Ordner_3-Unterordner1.rar" "Ordner_3-Unterordner-1.rar" 
ren "C:\Hauptverzeichnis\Ordner_2\Unterordner2\Ordner_2-Unterordner2.rar" "Ordner_2-Unterordner-2.rar" 
ren "C:\Hauptverzeichnis\Ordner_2\Unterordner3\Ordner_2-Unterordner3.rar" "Ordner_2-Unterordner-3.rar" 
ren "C:\Hauptverzeichnis\Ordner_3\Unterordner_1\Ordner_3-Unterordner_1.rar" "Ordner_3-Unterordner_-1.rar" 
ren "C:\Hauptverzeichnis\Ordner_3\Unterordner_2\Ordner_3-Unterordner_2.rar" "Ordner_3-Unterordner_-2.rar" 
ren "C:\Hauptverzeichnis\Ordner_3\Unterordner_3\Ordner_3-Unterordner_3.rar" "Ordner_3-Unterordner_-3.rar"
Je vielgestaltiger der Input desto komplizierter die Regex, um alles zu erfassen.
Bei all diesen Beispielen ist jedenfalls ein - vor der Zahl.

lg
Bitte warten ..
Mitglied: Thorsten90
22.07.2013, aktualisiert um 02:56 Uhr
Danke, aber um alle Verichnisse auszulisten sind es zu viele, dass, was ich angegeben habe, war nur das Muster.

Habe ne weile gesucht, aber ich denke, ich habe einen Lösungsansatz mittels stringmanipulation gefunden. Habe das Ganze etwas angepast, damit es für mein Problem passt. Zum testen habe ich diesen Code benutzt:

01.
@echo off 
02.
setlocal enabledelayedexpansion 
03.
set string=1123_bafgafg_fasdgasdg_1231_asdgag_asgasdfg_1311_c111.1.rar 
04.
set "findn=*_" 
05.
set "findc=*c" 
06.
for /l %%n in (1, 1, 15) do call set string=%%string:!findn!=%% 
07.
call set string=%%string:!findc!=%% 
08.
echo %string% 
09.
pause
Habe einfach irgenwas als string eingegeben, aber damit sollte alles abgedeckt sein. Er liefert, wie gewolt, nurnoch die Zahl am Ende.

Hab dann versucht, das ganze schrittweise in mein meinen Code zu integrieren. Der gedanke war, den Verzeichnisnamen in einer Variable zu speichern und anschließend die Variable zu verändern und zu übergeben, anstatt den Verzeichnisnamen direkt zu bergeben. Dazu wollte ich ersmal das übergeben an eine Variable testen:

01.
@echo off 
02.
setlocal enabledelayedexpansion 
03.
set dir= xyz 
04.
for /d %%i in ("%dir%\*") do ( 
05.
    for /d %%j in ("%%i\*") do ( 
06.
    set var=%%~nxj 
07.
    @echo %var% 
08.
09.
    echo %%i verarbeitet 
10.
11.
echo Fertig 
12.
pause
Aber ich bekomme nur "ECHO ist ausgschaltet" als Ausgbe, und solange ich nicht die korrekte Ausgabe habe, kann ich die manipulation nicht testen. Wo liegt mein Fehler?
Bitte warten ..
Mitglied: bastla
22.07.2013 um 07:38 Uhr
Hallo Thorsten90!

"delayedExpansion" nicht nur aktivieren, sondern auch verwenden:
echo !var!
Grüße
bastla
Bitte warten ..
Mitglied: Thorsten90
22.07.2013 um 08:43 Uhr
Hi

Vielen Dank, dass du mir wieder geholfen hast. Habe meine Batch damit angepasst und sie macht jetzt genau das, was sie soll. Mit den Dateinamen kann ich jetzt gut arbeiten.

Grüße
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Dateititel Attribut auf Dateiname ändern

Frage von BlackEndingBatch & Shell14 Kommentare

Hallo, ich habe ca 5000 Dateien von denen ich das Attribut "Titel" auf den Dateinamen ändern soll. Ich dachte ...

Batch & Shell

Dateiname über Batch ändern

gelöst Frage von c64b311ee9Batch & Shell6 Kommentare

Hallo liebe Community, folgendes Problem!: Ich habe einen Ordner mit 500 PDF Dateien. Diese sind nach folgendem Schema aufgebaut. ...

Batch & Shell

Finden von (fast) gleichen Dateinamen, Ändern von Dateinamen

gelöst Frage von internet2107Batch & Shell8 Kommentare

Ich habe leider mal wieder eine etwas knifflige Sache. Aktuell suche ich in Verzeichnissen nach Dateien mit gleichen Namen ...

Batch & Shell

Dateiname ändern, und auch in Datei ändern. evt mit einem Batch

gelöst Frage von helmuthelmut2000Batch & Shell18 Kommentare

Hallo, Ich möchte folgendes umsetzten: Ich habe ein paar Ordner mit Dateien Die Dateien haben folgende Dateinamen, ABC123456.doc ABC123457.doc ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 StundeGoogle Android

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 1 StundeSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 4 StundenMicrosoft2 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 22 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server35 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

CPU, RAM, Mainboards
32 gb RAM zu wenig?
Frage von pcguyCPU, RAM, Mainboards13 Kommentare

Hallo zusammen, mein PC verfügt über 32GB Ram. Nun kriege ich bei grossen Dateien im Illustrator die Fehlermeldung das ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing9 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...