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

Frage Entwicklung Batch & Shell

Mitglied: Thorsten90

Thorsten90 (Level 1) - Jetzt verbinden

21.07.2013, aktualisiert 13:47 Uhr, 2582 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
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 14 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 14 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 22 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...