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

Dateien mit BATCH umbenennen

Frage Entwicklung Batch & Shell

Mitglied: rique1me

rique1me (Level 1) - Jetzt verbinden

14.10.2008, aktualisiert 23:24 Uhr, 5478 Aufrufe, 5 Kommentare

Hoffe könnte mir helfen! Will ein Script schreiben, was eine Reihe von Dateien umbenennt.

Die Dateien heißen:
ABC001.txt
ABC002.txt
...

Mein Ansatz ist wie folgt :

for %i in (ABC???.txt) do ren %i DEF???.txt

bekomme aber dann diese Meldung:
i was unexpected at this time.

Als Zusatzinformation
Ich nutze Windows XP SP3

Hoffe könnte mir helfen.


Vielen Dank
Mitglied: bastla
14.10.2008 um 10:31 Uhr
Hallo rique1me!

Wenn Du Deinen Ansatz in einem Batch verwenden willst, musst Du jeweils die "%"-Zeichen verdoppeln, also:
01.
for %%i in (ABC???.txt) do ren %%i DEF???.txt
Allerdings würde auch
01.
ren ABC???.txt DEF???.txt
genügen.

Grüße
bastla
Bitte warten ..
Mitglied: rique1me
14.10.2008 um 11:06 Uhr
hey bastla danke =)
das ist ja nur als übung für weiter aufgaben
das problem habe ich gelöst:

Nun habe ich ein neues.
Ich will, dass der User gefragt wird, welchen Präfix die Dateien haben.
Wenn es den Präfix gibt, soll die Datei umbenannt werden ansonsten die Fehlermeldung
"Datei nicht gefunden" ausgegeben werden.

Ich hänge gerade beim FIND

Hier mein Code

@echo off
set prae=
set /p prae=Geben Sie den Praefix der Datei(en) ein!

find /i "%prae%"

if %errorlevel%==0 (

for %%i in (%prae%???.txt) do ren %%i DEF???.txt

) else (

echo Datei nicht gefunden!

)
Bitte warten ..
Mitglied: bastla
14.10.2008 um 11:33 Uhr
Hallo rique1me!

Wenn Du bereits an weitere Aufgaben denkst (und Du zu diesen hier Batches posten wirst), solltest Du einen Blick auf diese Formatierungsmöglichkeit werfen (ich verwende übrigens unten type="plain" für die Darstellung ohne Zeilennummern) ...
Wenn es den Präfix gibt, soll die Datei umbenannt werden ansonsten die Fehlermeldung "Datei nicht gefunden" ausgegeben werden.
Da genügt ein
dir /a-d "%prae%???.txt" >nul 2>nul || goto :NichtGefunden 
... 
... 
... 
goto :eof 
 
:NichtGefunden 
echo Keine passende Datei gefunden! 
...
Sogar das könnte entfallen, da die "for"-Schleife für nicht vorhandene Dateien einfach nullmal ausgeführt wird (allerdings gäbe es dann keine Rückmeldung) ...

Grüße
bastla
Bitte warten ..
Mitglied: rique1me
14.10.2008 um 13:41 Uhr
kannst du mir vielleicht verraten, wie man den dateinamen noch automatisch hochzählen lassen kann?

Also wenn ich sage die dateien heißen alle

Test001.txt
Test002.txt
Test003.txt
...

und das Programm soll die dann in
Text001.txt
Text002.txt
Text003.txt
...

speichern. also immer automatisch fortsetzen.
auch wenn ich jetzt andere dateien in text speichern will soll der keine überschreiben sondern an der zählweise anschließen
Bitte warten ..
Mitglied: bastla
14.10.2008 um 23:24 Uhr
Hallo rique1me!

In diesem Fall brauchst Du tatsächlich eine Schleife:
01.
@echo off & setlocal  
02.
set "Alt=Test???" 
03.
set "Neu=Text" 
04.
set "Ext=.txt" 
05.
set /a Nr=1000 
06.
 
07.
pushd "D:\Dein Ordner mit den Dateien" 
08.
for /f "delims=" %%i in ('dir /b /a-d /on "%Alt%*%Ext%" 2^>nul') do call :ProcessFile "%%i" 
09.
popd 
10.
goto :eof 
11.
 
12.
:ProcessFile 
13.
:Schleife 
14.
set /a Nr+=1 
15.
if exist "%Neu%%Nr:~-3%%Ext%" goto :Schleife 
16.
ren %1 "%Neu%%Nr:~-3%%Ext%" 
17.
goto :eof
Mit dem Startwert "1000" und dem "-3" (= letzte 3 Stellen) legst Du die Stellenanzahl des Zählers fest und sorgst für die führenden Nullen (beim ersten Durchlauf wird die Nr "1001" erzeugt, die letzten 3 Stellen sind "001", usw).

Die Schleife dient dazu, die nächste freie Nummer zu finden, indem jeweils auf Existenz einer Datei mit der aktuellen Nummer geprüft wird.

Der Nachteil dieser Version liegt darin, dass für jede Datei bei der Nummer "001" zu prüfen begonnen wird. Wenn daher viele Dateien in diesem Batch verarbeitet werden sollen, wäre die Alternative, zunächst die erste freie Nummer zu bestimmen und diese dann einfach für jede Datei hochzuzählen. Das ginge etwa so:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Alt=Test???" 
03.
set "Neu=Text" 
04.
set "Ext=.txt" 
05.
set /a Nr=1000 
06.
 
07.
pushd "D:\Dein Ordner mit den Dateien" 
08.
:Schleife 
09.
set /a Nr+=1 
10.
if exist "%Neu%%Nr:~-3%%Ext%" goto :Schleife 
11.
 
12.
for /f "delims=" %%i in ('dir /b /a-d /on "%Alt%*%Ext%" 2^>nul') do ( 
13.
    ren %%i "%Neu%!Nr:~-3!%Ext%" 
14.
    set /a Nr+=1 
15.
16.
popd
Die Verwendung von "delayedExpansion" erspart hier die Verwendung eines Unterprogrammes, da damit in der "for"-Schleife die Nummer %Nr% nicht nur hochgezählt, sondern deren neuer Wert auch sofort verwendet werden kann (siehe Schreibweise !Nr! anstatt %Nr%).

Um übrigens den Ablauf (für beide beschriebene Varianten) ganz exakt zu beschreiben: Es wird die niedrigste freie Nummer gesucht - falls es etwa "Text012.txt" nicht gibt, "Text013.txt" allerdings vorhanden ist, geht das Ganze für die Version 2 schief (in Version 1 werden die Lücken aufgefüllt).

Abhilfe kann hier die Suche nach der höchsten tatsächlich vorhandenen Nummer schaffen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Alt=Test???" 
03.
set "Neu=Text" 
04.
set "Ext=.txt" 
05.
 
06.
pushd "D:\Dein Ordner mit den Dateien" 
07.
set Hoechste= 
08.
for /f "delims=" %%i in ('dir /b /a-d /on "%Neu%*%Ext%" 2^>nul') do set "Hoechste=%%~ni" 
09.
set /a Nr=1000 
10.
if defined Hoechste set /a Nr=1%Hoechste:~-3% 
11.
 
12.
set /a Nr+=1 
13.
for /f "delims=" %%i in ('dir /b /a-d /on "%Alt%*%Ext%" 2^>nul') do ( 
14.
    ren %%i "%Neu%!Nr:~-3!%Ext%" 
15.
    set /a Nr+=1 
16.
17.
popd
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

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

Frage von tocksick zum Thema Batch & Shell ...

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 ...