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

Batch Alle Dateien in einem Ordner umbenennen Punkt durch Unterstrich ersetzen

Frage Entwicklung Batch & Shell

Mitglied: holzhausen

holzhausen (Level 1) - Jetzt verbinden

11.04.2013 um 15:53 Uhr, 4086 Aufrufe, 7 Kommentare

Guten Tag,

ich möchte gern in einer Batch-Datei alle Dateien in einem Ordner umbenennen. Diet Dateien wurden alle mit "." benannt (Bsp: test.test.test.txt) Nun möchte ich nicht in allen dateien einzeln die Punkt entfernen sondern die per Batch machen.

Über die folgenden Befehle werden alle Punkte ersetzt:

for %%i in ("c:\rename\*.*.*") do (
set "neu=%%~nxi"
ren "%%i" "!neu:.=_!"
)

Leider habe ich das Problem, dass der letzte Punkt nicht ersetzt werden darf, da es sich hier um die Dateiendung handelt.

In dem folgenden Beispiel ist diese Umbenennung nachtäglich durch Stringopertaionen möglich:

set hallowelt=Hallo_Welt_pdf
set letzte=%hallowelt:~-3%
set erste=%hallowelt:~0,-4%
set neu=%erste%.%letzte%

Jedoch schaffe ich es leider nicht diese Idee in einer For-Schleife zu verwirklichen. Kann mir da jemand helfen oder gibt es eine einfachere Lösung?

So sieht meine Lösung bisher aus:

for %%i in ("c:\rename\*_???") do (
set "var=%%~nxi"
set ende=%var:~-3%
set anfang=%var:~0,-4%
set name="%anfang%.%ende%"

Leider wird hier die Variable "var" anscheinend nicht richitg interpretiert und es kann nicht erkannt werden, dass etwas "abgeschnitten" werden soll.

Danke.

Mit freundlichen Grüßen,

D
Mitglied: Endoro
11.04.2013, aktualisiert um 18:18 Uhr
Hallo holzhausen,

versuch doch mal:

01.
 @echo off&setlocal enabledelayedexpansion 
02.
for %%i in ("c:\rename\*") do ( 
03.
 set "neu=%%~ni"  
04.
 ren "%%~i" "!neu:.=_!%%~xi" 
05.
 )

Gruss!
Bitte warten ..
Mitglied: bastla
11.04.2013, aktualisiert um 19:48 Uhr
... aber nur, wenn in den Dateinamen kein "!" vorkommt - dann besser per Unterprogramm:
01.
@echo off & setlocal 
02.
for %%i in ("c:\rename\*.*.*") do set "neu=%%~ni" & call :ProcessFile "%%i" 
03.
goto :eof 
04.
 
05.
:ProcessFile 
06.
ren %1 "%neu:.=_%%~x1" 
07.
goto :eof
Wenn auch noch Ordner mit mehr als einem Punkt im Namen enthalten sein sollten (und die Umbenennung nur für Dateien erfolgen darf):
01.
@echo off & setlocal 
02.
pushd "c:\rename" 
03.
for /f "delims=" %%i in ('dir /b/a-d *.*.*') do set "neu=%%~ni" & call :ProcessFile "%%i" 
04.
popd 
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
ren %1 "%neu:.=_%%~x1" 
09.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Endoro
11.04.2013 um 23:11 Uhr
Hallo bastla,

die "call"s können auch direkt in der Forschleife gemacht werden.
Das Script wird nicht unbedingt schneller dadurch
01.
@echo off&setlocal 
02.
for %%i in (*) do ( 
03.
set "neu=%%~ni"  
04.
call set "neu=%%neu:.=_%%" 
05.
for /f "delims=" %%j in ('call echo "%%neu%%"') do ren "%%~i" "%%~j%%~xi" 
06.
)
Gruss!
Bitte warten ..
Mitglied: bastla
11.04.2013 um 23:17 Uhr
Hallo Endoro!
Das Script wird nicht unbedingt schneller dadurch
... aber Sicherheit geht vor.

Schneller wird's aber, wenn nicht alle Dateien behandelt werden müssen (deswegen die Vorgabe "*.*.*") ...

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
12.04.2013 um 06:52 Uhr
Hallo bastla,

ich war auch zu freigiebig mit den calls:
01.
@echo off&setlocal 
02.
for %%i in (*.*.*) do ( 
03.
set "neu=%%~ni"  
04.
for /f "delims=" %%j in ('call echo "%%neu:.=_%%"') do ren "%%~i" "%%~j%%~xi" 
05.
)

Gruss!
Bitte warten ..
Mitglied: holzhausen
12.04.2013 um 07:13 Uhr
Vielen Dank!!! Das hat funktioniert!

Danke für die schnelle Hilfe!!!
Bitte warten ..
Mitglied: bugmenot2
29.09.2014, aktualisiert um 22:23 Uhr
Hallo,

ich habe ein ähnliches Problem. Ich möchte dateien mit ABC_123_a.pdf umbenennen in ABC.123_a.pdf

also der zweite unterstrich soll (wenn vorhanden, auch ABC_123.pdf in ABC.123.pdf sind möglich) bleiben und der erste durch einen punkt ersetzt werden.

wie müsste ich Endoros code dann abändern (sorry bin kein Programmierer)?
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Per Batch Dateien in einen Ordner - ext. Festplatte übertragen (2)

Frage von tocksick zum Thema Batch & Shell ...

Batch & Shell
gelöst For f - In vielen Dateien Komma durch Punkt ersetzen (2)

Frage von alleedx zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...