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

Datennamen durch Listeinhalt umbenennen, ergänzen

Frage Entwicklung Batch & Shell

Mitglied: 115241

115241 (Level 1)

26.02.2014, aktualisiert 30.06.2014, 1137 Aufrufe, 7 Kommentare, 2 Danke

Hallo, ich grüße alle sehr Herzlich.

Ich möchte per Batch JPG Bilder die in einem Verzeichnis liegen umbenennen, jedoch der neue Dateiname befindet sich in eine Liste.txt.
Liste.txt Inhalt:
  • Weihnachtsbilder
  • Urlaubsbilder Oslo
  • Urlaubsbilder London
  • Urlaubsbilder Paris
usw. usf.


Jetzt möchte ich diese Liste verwenden und die JPG Bilder umbenennen
aus nr blabla.jpg soll nr blabla Weihnachtsbilder.jpg
aus nr xyz.jpg soll nr xyz Urlaubsbilder Oslo.jpg
aus nr text.jpg soll nr text Urlaubsbilder London.jpg
aus nr noch ein text.jpg soll nr noch ein text Urlaubsbilder Paris.jpg
usw. usf.

Bilder und Liste.txt liegen alle in gleichen Ordner.

Mein Ansatz ist:
01.
@echo off & setlocal enabledelayedexpansion 
02.
cls 
03.
set Liste=D:\test\Liste.txt 
04.
for /f %%i in ('dir /b a-d *.jpg') do ( 
05.
    set dn=%%~ni 
06.
    set de=%%~xi 
07.
    for /f "delims=" %%j in (%liste%) do ( 
08.
    echo !dn! %%j!de! 
09.
10.
11.
pause
Das ganze funktioniert leider nicht, weil erstens alles zig mal durchläuft und wenn ich echo mit ren vertausche, da kommt Syntaxfehler
Ich wäre noch für eine kurze Erklärung wieso das nicht läuft sehr dankbar und hoffe jemand kann bei mein kleinen Problem helfen.
Danke

ps ich hab mir andere Beiträge durch geschaut, leider komme ich nicht weiter
Mitglied: bastla
LÖSUNG 26.02.2014, aktualisiert 30.06.2014
Hallo entilzha und willkommen im Forum!

Das "zig mal-Durchlaufen" ergibt sich aus der Verschachtelung der Schleifen: Für jede gefundene Datei wird die gesamte Liste abgearbeitet.

"ren" funktioniert nicht, weil in !dn! ja nur der Dateiname steht - auch wenn sich die Datei im aktuellen Ordner befindet und damit kein Pfad benötigt wird, muss zumindest der Typ dabei sein, um die Datei finden zu können, und dann kannst Du ganz ohne Zerlegung %%i verwenden.

Die Zuweisung an die Variablen !dn! und !de! ist übrigens unnötig - Du kannst einfach %%~ni und %%~xi an der passenden Stelle (also im "ren"-Befehl) direkt einsetzen.

Da Du vermutlich nicht nur eine Erklärung für die Ist-Situation Deines Batches suchst, noch ein Vorschlag, diese zu verbessern:
01.
@echo off & setlocal 
02.
cls 
03.
set "Liste=D:\test\Liste.txt" 
04.
(for /f %%i in ('dir /b a-d *.txt') do ( 
05.
    set "Neu=" 
06.
    set /p "Neu=" 
07.
    setlocal enabledelayedexpansion 
08.
    echo ren "%%i" "%%~ni!Neu!%%~xi" 
09.
    endlocal 
10.
))<"%liste%" 
11.
pause
BTW: Durch das Einschalten der "delayedeExpansion" erst nach dem Einlesen des Wertes in die Variable !Neu! darf diese sogar eine beliebige Anzahl von "!" enthalten.

Noch ein Hinweis: Wenn die Liste zu wenig Einträge enthält, werden die verbleibenden Dateien einfach nicht umbenannt.
ps ich hab mir andere Beiträge durch geschaut
Diesen aber vermutlich nicht (musste man/frau aber wohl kennen, um ihn finden zu können ) ...

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
27.02.2014, aktualisiert um 11:14 Uhr
Hallo bastla,

Zitat von bastla:

BTW: Durch das Einschalten der "delayedeExpansion" erst nach dem Einlesen des Wertes in die Variable !Neu! darf
diese sogar eine beliebige Anzahl von "!" enthalten.

Das klappt aber nur, wenn Forschleifenparameter nicht innerhalb verzögerter Erweiterung erweitert werden. Die müssen ihre Werte zuvor an normale Variable übertragen.
Gruss, Endoro.
Bitte warten ..
Mitglied: bastla
27.02.2014 um 12:40 Uhr
@ Endoro
Bist Du sicher, dass dadurch der Wert der Variablen !Neu! betroffen wäre? Hinsichtlich der Dateinamen / Extensions hast Du natürlich Recht ...

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
27.02.2014 um 13:23 Uhr
Hallo @bastla,
!Neu! ist nicht betroffen, da hast du völlig recht, das hab ich missverständlich formuliert. !Neu! wäre nicht mal betroffen, wenn die verzögerte Erweiterung zum Beginn eingeschaltet wird. Das gilt nur für Forschleifen Parameter, die ihre "!"-Zeichen während delayed expansion verlieren.
Gruss, Endoro.
Bitte warten ..
Mitglied: 115241
27.02.2014 um 16:15 Uhr
Danke für die schnelle Hilfe und die Erklärung.

Ich hab noch eine kleine Frage und zwar verstehe ich fast alles aus deinem Code bastla, nur nicht Zeile 10, 5 und 6.

Bezieht sich Zeile 10 auf die 5te bzw. dann auf die 6te, sehe ich das richtig?
Wird per < der Inhalt der Liste.txt in die For Schleife geschrieben und mit in der neu Variable verarbeitet?
Bitte warten ..
Mitglied: bastla
27.02.2014 um 16:55 Uhr
Hallo entilzha!

Zeile 10 übergibt tatsächlich die Liste, sodass innerhalb der Schleife bei jedem Durchlauf ein Eintrag (durch Zeile 6) der Variablen !Neu! zugewiesen wird. Zeile 5 sorgt dafür, dass nicht, falls tasächlich einmal zu wenige Werte in der Liste stünden, immer der letzte Wert weiter verwendet würde ...

Grüße
bastla
Bitte warten ..
Mitglied: 115241
27.02.2014 um 17:41 Uhr
Hallo bastla,
vielen Dank für die Erklärung
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell - Dateien vergleichen und ergänzen
Frage von Franz-Josef-IIBatch & Shell11 Kommentare

Guten Tag Ich bin wieder einmal bei meiner CSV dran und hänge :-( trotz Google und Co Ausgangslage ist ...

Exchange Server
Anzeigename autom. um Suffix ergänzen
gelöst Frage von AndroxinExchange Server14 Kommentare

Moin, moin. Ist es möglich den im AD hinterlegten Anzeigenamen ("Vorname Nachname") beim E-Mail Versand automatisch von Exchange erweitern ...

Outlook & Mail
Outlook Aufgabenformular: Textfeld im Hauptformular ergänzen
Frage von mreskeOutlook & Mail3 Kommentare

Hallo, gibt es eine Möglichkeit im Outlook Aufgabenformular auf der Hauptseite ein Textfeld anzufügen. In meinem speziellen Fall möchte ...

Batch & Shell
Dateien Umbenennen
gelöst Frage von PLBot85Batch & Shell6 Kommentare

Hi, ich habe einen Ordner wo mehrer Dateien drin liegen. 20150316_121757_92636382965528_WMA1847GK62_TDOBB112.ddd 20150314_085730_73826383950256_WMA18263926_TDOBB236.ddd etc Die sollen jetzt mittels einer Batchdatei ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 6 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 10 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware8 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...