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 Leerzeichen in Dateinamen in Unterstrich umbenennen via Batch

Mitglied: fischkopf

fischkopf (Level 1) - Jetzt verbinden

08.01.2009, aktualisiert 13:54 Uhr, 24548 Aufrufe, 10 Kommentare

Hallo Leute,

ich habe da ein (für Euch wahrscheinlich triviales) Anliegen: Ich möchte via Batch Dateien in einem bestimmten Verzeichnis umbenennen. Die Dateien sehen so aus: XX XXXXXXXX_X.tif und sollen so aussehen: XX_XXXXXXXX_X.tif.
Ich will also nur das an der dritten Stelle vorkommende Leerzeichen durch einen Unterstrich ersetzen.

Die aufrufende Batch liegt nicht im Zielverzeichnis, aber das ist sicher das kleinste Problem

Wer kann mich da auf den richtigen Weg bringen oder hat gar direkt eine Lösung dafür parat? Tausend Dank!

fischkopf
Mitglied: Biber
08.01.2009 um 14:15 Uhr
Moin fischkopf,

willkommen in Forum.
Wenn ich diese Anforderung (Dateien entsprechend einer exakten Wildcard-Spezifikation und in einem Bestimmten Verzeichnis) vorliegen hätte, würde ich es mit einem Oneliner vom CMD-Prompt aus abfackeln und nicht lange rumbätscheln.

01.
>for /f "tokens=1,2" %i in ('dir /b "e:\work\?? *.tif"') do @echo ren "e:\work\%i %j" %i_%j 
02.
ren "e:\work\XX XXXXXXXX_X.tif" XX_XXXXXXXX_X.tif
Hier mal ein examplarischer proof-of-concept für derartige Dateien im Verzeichnis "e:\work".

Grüße
Biber
Bitte warten ..
Mitglied: fischkopf
08.01.2009 um 14:30 Uhr
Hallo Biber,

herzlichen Dank für die schnelle Antwort! Das ganze soll leider zeitgesteuert immer wieder ausgeführt werden, deshalb muss ich das wohl in eine Batch schreiben. Muss ich dazu Anpassungen vornehmen?

Danke!

fischkopf
Bitte warten ..
Mitglied: Biber
08.01.2009 um 15:37 Uhr
Moin fischkopf,

wenn Du diese CMD-Prompt-zeile in einer Batchdatei verwenden willst, dann müssen die jetzigen einfachen Prozentzeichen ( %i und %j) durch doppelte ersetzt werden (%%i und %%j).

Beispiele dafür und auch für das zeitgesteuerte Starten über Taskplane o.ä. findest Du sicher über die Forumssuche.

Grüße
Biber
Bitte warten ..
Mitglied: fischkopf
08.01.2009 um 15:53 Uhr
Hallo Biber,

sorry - aber ich muss wohl die Anforderung nochmals genauer darstellen - mein Fehler!

Vom Leerzeichen an der dritten Stelle des Dateinamens können wir abrücken. Was ich bräuchte wäre eine Batch, die stur an die dritte Stelle des Dateinamens jeder gefundenen Datei in einem Verzeichnis (Dateimaske: *.tif) einen Unterstrich einfügt.

Also etwa so: xxxxxxxxxx_1.tif => xx_xxxxxxxx_1.tif oder yyyyyyyyyy_2.tif => yy_yyyyyyyy_2.tif

Die Dateinamen werden also alle um eine Stelle länger, und zwar um den an der dritten Stelle eingefügten Unterstrich.

Ich würde mich freuen, wenn Du mir dabei nochmal helfen könntest. Danke!
Bitte warten ..
Mitglied: Biber
08.01.2009 um 17:13 Uhr
Na ja, fischkopf,

ist handwerklich auch kein großes Problem, aber....

--> irgendwie brauchst Du dann erstmal einen echten Plan B.
Denn wenn per Taskplaner in regelmäßigen Abständen alle *.tif-Dateien um ein "_" an der dritten Zeichenposition "verlängert" werden, dann hast Du am Ende des Jahrtausends ziemlich lange Dateinamen.

Kann ich denn die Zusatzbedingung "alle *.tif, die KEINEN Unterstrich als 3tes Zeichen im Dateinamen haben" unterstellen?

Wenn ja, dann wäre eine Batchskizze:
01.
@echo off & setlocal 
02.
Set "myTifDir=E:\work" 
03.
FOR %%i in ( "%myTifDir%\*.tif") do call :RenameWithUnderscore "%%~nxi" 
04.
goto :eof 
05.
 
06.
:RenameWithUnderscore Parameter 1 ist der Dateiname 
07.
Set "oldname=%~1" 
08.
Set "OldFirst2Chars=%oldname:~0,2%" 
09.
Set "OldChars3ToEnd=%oldname:~2%" 
10.
IF "%oldname:~2,1%" NEQ "_" ( 
11.
ECHO Ren "%mytifDir%\%oldname%" "%OldFirst2Chars%_%OldChars3ToEnd%" 
12.
REM nach dem Testen: Ren "%mytifDir%\%oldname%" "%OldFirst2Chars%_%OldChars3ToEnd%" 
13.
14.
goto :eof
[Ungetestete Skizze]

Grüße
Biber
Bitte warten ..
Mitglied: fischkopf
08.01.2009 um 21:24 Uhr
Hallo Biber,

da bekomme ich leider nur die lapidare Mitteilung: Syntaxfehler
Den habe ich aber leider noch nicht gefunden....

Aber die Prüfung auf Nichtvorhandensein eines Unterstriches an der dritten Stelle des Dateinamens ist auch nicht nötig, da die umbenannten Dateien weiterverarbeitet werden und danach aus dem Verzeichnis verschwinden!

Parallel dazu habe ich mich auch weiter dazu umgeschaut und frage mich, warum folgende Batch nicht richtig funktioniert:

@echo off
setlocal enabledelayedexpansion

for %%i in ("*.tif") do (
set x=%%i
ren %%i !x:~0,2!_!x:~2!
)

Wenn nur eine Datei im Verzeichnis liegt (hier im Beispiel liegt die Batch im Verzeichnis wo auch die Bilder liegen) klappt es prima. Wenn es mehrere sind macht sie aus
IMG_0075.JPG
IMG_0078.JPG

folgendes:
IM__G_0075.JPG
IM_G_0078.JPG

Sie fügt also in der ersten Datei zwei Unterstriche ein. Wieso? Keine Ahnung.

fischkopf
Bitte warten ..
Mitglied: Biber
08.01.2009 um 21:34 Uhr
Moin fischkopf,

nur kurz zwischendurch zum Syntaxfehler (ich schreibe grad an einem anderen Kommentar)
  • oben fehlte ein schließendes Anführungszeichen
  • und es musste heißen "call :gecallterblock" statt "call: gecallterblock" (also SPACE-Doppelpunkt statt umgekehrt)
  • Fehler sind oben korrigiert

  • das zweite Beispiel habe ich jetzt nicht angesehen

Grüße
Biber
Bitte warten ..
Mitglied: fischkopf
08.01.2009 um 21:53 Uhr
Hallo Biber,

Deine Batch läuft nun ohne Fehlermeldung, ein Nicht-Newbie hätte die sicher auch selbst gefunden DANKE!

Allerdings zeigt die Batch das gleiche Verhalten wie von mir oben geschildert, wenn man die die Prüfung auf schon vorhandene Unterstriche an der zweiten Stelle herausnimmt: ab zwei umzubenennenden Dateien im Verzeichnis erhält eine Datei pro Aufruf immer einen Unterstrich mehr als die andere. Beim nächsten Aufruf die andere.
Den Grund dafür habe ich noch nicht finden können, möchte es aber gern kapieren. Wenn du mal Lust und Zeit hast kannst du das ja mal antesten. Bin echt gespannt, wo der Hase im Pfeffer liegt
Bitte warten ..
Mitglied: Biber
08.01.2009 um 22:19 Uhr
Moin fischkopf,

dann kann es eigentlich nur so sein, dass ich durch das Umbenennen die dynamische Liste des
FOR %%i in ("verzeichnis\*.tif) ...
...durcheinanderbringe.

Dieses Verhalten habe ich zwar noch nicht beobachtet, aber umgehen können wir es bestimmt, wenn wir die "FOR %%i"-Anweisung durch eine Anweisung der Art...
FOR /F "delims=" %%i in ('dir /b "verzeichnis\*.tif"') do ....
ersetzen.

Probier Du es ruhig, wenn Du noch wach bist.... ich mach sonst morgen weiter...

Grüße
Biber
Bitte warten ..
Mitglied: fischkopf
09.01.2009 um 11:19 Uhr
Hallo Biber,

habe die Batch mit Deinern letzten Änderungen angepasst und getestet. Funktioniert prima!
Für Interessiert und die Nachwelt: So sieht sie aktuell aus:
01.
:: ======================== 
02.
@echo off & setlocal  
03.
Set "myTifDir=c:\test11"  
04.
FOR /F "delims=" %%i in ('dir "%myTifDir%\*.tif" /B') do call :RenameWithUnderscore "%%~nxi"  
05.
goto :eof  
06.
 
07.
:RenameWithUnderscore 
08.
Set "oldname=%~1"  
09.
Set "OldFirst2Chars=%oldname:~0,2%"  
10.
Set "OldChars3ToEnd=%oldname:~2%"  
11.
Ren "%mytifDir%\%oldname%" "%OldFirst2Chars%_%OldChars3ToEnd%"  
12.
 
13.
goto :eof 
14.
:: ========================
Danke nochmals!



[Edit Biber] Gern geschehen. Habe noch den Code in <code>-Tags gesetzt. [/Edit]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch: doppeltes Leerzeichen in Dateinamen?

gelöst Frage von WoswaasiBatch & Shell3 Kommentare

Hallo! Wir verarbeiten bei uns in der Arbeit Audio-Dateien, die über Nacht in 5-Minuten-Abschnitte gesplittet werden. Ich habe dafür ...

Batch & Shell

Leerzeichen aus Dateinamen entfernen

gelöst Frage von noob-xBatch & Shell3 Kommentare

Hallo Profis, ich möchte bei vielen Dateien in einem Ordner die Leerzeichen aus den Dateinamen entfernen Dateien sehen so ...

Batch & Shell

Leerzeichen, Sonderzeichen in Dateinamen lassen Batch crashen

Frage von Domain-JaneBatch & Shell3 Kommentare

Hallo zusammen, hier meine Frage zum Sonntag ;): Mit dem Dir-Befehl lasse ich mir eine Datei erzeugen, indem Pfad+Dateinamen ...

Batch & Shell

Batch - Dateinamen auslesen, umbenennen + dreistellige Zahl vor bisherigen Dateinamen setzen.

Frage von citroendsvierBatch & Shell4 Kommentare

Hallo und guten Morgen, ich möchte für drei Ordner (2011, 2013, 2014) eine Batch schreiben, die die darin enthaltenen ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

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

Heiß diskutierte Inhalte
Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

Grafikkarten & Monitore
4k EIZO Monitor, Fernseher und Splitter
Frage von LerxxeyGrafikkarten & Monitore9 Kommentare

Hallo Zusammen, vielleicht könnt ihr mir bei einem Problem helfen wo ich einfach nicht mehr weiterkomme Und zwar haben ...

TK-Netze & Geräte
Fax im Betrieb
Frage von gansa28TK-Netze & Geräte6 Kommentare

Hallo zusammen, Endlich wurden meine Gebete Erhört und der Rechner meines Bekannten dem ich etwas unter die Arme greife, ...

Windows Server
HyperV Failover Cluster Konzeption und Aufbau
Frage von snowboard86Windows Server5 Kommentare

Hallo liebe KollegInnen, Ich habe eine Frage zu Hyper V Failover-Clusters. Wir sind ein mittelständisches Handelsunternehmen und haben aktuell ...