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
GELÖST

Bestimmte Zeichen einer Datei umbenennen mit Batch

Frage Entwicklung Batch & Shell

Mitglied: TsukiSan

TsukiSan (Level 2) - Jetzt verbinden

01.11.2010, aktualisiert 13:34 Uhr, 7376 Aufrufe, 4 Kommentare

Ich möchte Dateien in einem Ordner umbenennen und zwar nur bestimmte Zeichen davon.

Hallo Jungs,

nur interessehalber möchte ich gern bestimmte Zeichen(Strings) einer Datei umbenennen.

Zum Beispiel:
Ich habe in einem Ordner C:\Test\
einige Dateien. Die heißen:
1_2_3_4.txt
5_6_7_8.txt
9_10_11_12.txt
13_14_15_16.txt
usw.

Nun stört mich der Unterstrich "_" und ich möchte diesen durch ein Leerzeichen " " in einem Rutsch mittels Batch ersetzen.

Wie man die Dateien in einem Ordner auflistet ist mir klar. Da hätte ich:
01.
@Echo OFF 
02.
for /F "tokens=*" %%f in ('dir /b *.*') do ( 
03.
	echo %%f  
04.
)
Wie bekomme ich aber die Variable "%%f" dazu, dass ich diese in eine neue Variable einlese und dabei den Unterstrich durch ein
Leerzeichen ersetze.

Das hier
01.
Set Neu=%f:_= "
funktioniert scheinbar nicht.
Dann müßte ich ja nur noch schreiben:
01.
ren %%f %neu%
Aber da "beist" sich ja was.

In VBS läßt sich das einfach lösen. Da habe ich auch eine Lösung dafür. Kein Problem! Nur wie macht man das mit Batch??

Hier eine Lösung in VBS:
01.
Dim FSO, Ordner, Von , Nach 
02.
 
03.
Ordner = InputBox("Bitte Pad eingeben!") 
04.
Von = InPutBox("Bitte Suchzeichen eigeben!", , "_") 
05.
Nach = InputBox("Bitte Ersetzungszeichen eingeben!", ," ") 
06.
 
07.
Set FSO = CreateObject("Scripting.FileSystemObject") 
08.
For Each File In FSO.GetFolder(Ordner).Files 
09.
	a = Replace(File.Name, von , nach) 
10.
	Wscript.Echo "Benenne: " & File.Name & "um nach : " & a 
11.
	FSO.MoveFile File.Name , a 
12.
Next
Vielen Dank für eure Mühe und

viele Grüße

Tsuki
Mitglied: colinardo
01.11.2010 um 13:37 Uhr
du hast hier anstatt "%" ein Anführungszeichen gesetzt, das ist der Fehler:
01.
Set Neu=%f:_= "
das geht 100%:

01.
Set Neu=%f:_= %
Bitte warten ..
Mitglied: 60730
01.11.2010 um 13:58 Uhr
Moin Tsuki.

naja eigentlich hasse ich ja leerzeichen in fast allem....

01.
for /f "tokens=1-5 delims=_" %%a in ('dir /b *_*') do echo %%a
kennst du doch sicher...

01.
for /f "tokens=1-5 delims=_." %a in ('dir /b *_*.*.txt') do echo %b %c %d
kennst du auch
01.
for /f "tokens=1-5 delims=_." %%a in ('dir /b *_*.*.txt') do ( 
02.
    if not "%e"=="" if not "%%e"=="txt" ren "%%a_%%b_%%c_%%d_%%e.txt" "%%a %%b %%c %%d %%e.txt" 
03.
rem usw 
04.
)
Gruß
Bitte warten ..
Mitglied: bastla
01.11.2010 um 14:48 Uhr
@Softmeister
das geht 100%:
... wenn Du eine Variable %f% erfindest - mit der Schleifenvariablen %%f allerdings nicht ...

... da würde dann eine "gewöhnliche" Variable zusätzlich benötigt - also etwa:
01.
@echo off & setlocal 
02.
for /f "delims=" %%f in ('dir /b /a-d *.txt') do set "DateinameAlt=%%f" & call :ProcessFile "%%f" 
03.
goto :eof 
04.
 
05.
:ProcessFile 
06.
ren %1 "%DateinameAlt:_= %" 
07.
goto :eof
oder, wenn es keine Dateinamen mit "!" im Namen gibt, auch:
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /f "delims=" %%f in ('dir /b /a-d *.txt') do set "DateinameAlt=%%f" & ren "%%f" "!DateinameAlt:_= !"
Grüße
bastla

P.S.: Beide Vorschläge ungetestet ...
Bitte warten ..
Mitglied: TsukiSan
01.11.2010 um 23:04 Uhr
Moin zusammen,

vielen Dank für eure schnellen und richtigen Antworten!

@Softmeister
ich hatte es auch ohne unnötiges Anführungszeichen vorher probiert und bei meiner Fragestellung ehr eins vergessen.
Hatte beides aber nicht funktioniert.

@bastla
hab mich für den 2ten Vorschlag entschieden, da keine Sonderzeichen in den Dateien vorkommen.
Besten Dank!!!

@Timo
ja, normalerweise mag ich die Leerzeichen auch nicht. Aber in diesem Falle gingen mir die Unterstriche bei der "Neu-Benamsung" auf den Keks und ich hätte lieber Leerzeichen. Dabei hatte ich mir gedacht, nimmst'e Batch, geht schneller als VBS und siehe da, musste eine Frage posten, weil's mich ja nun doch interessiert hatte, wie's in Batch geht.

Also nochmals, Danke euch allen und noch eine schöne Woche

Tsuki
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Neuere Datei per Batch ausfinding machen (2)

Frage von chattie zum Thema Batch & Shell ...

Windows Server
gelöst Datei per Batch in Ordner mit sich ständig änderndem Namen kopieren (3)

Frage von Drxrey zum Thema Windows Server ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...