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

Dateien mit BATCH umbenennen

Frage Entwicklung Batch & Shell

Mitglied: rique1me

rique1me (Level 1) - Jetzt verbinden

14.10.2008, aktualisiert 23:24 Uhr, 5529 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 ..
Ähnliche Inhalte
Batch & Shell
Batch Datei: PDF Dateien verschieben, umbenennen und löschen
gelöst Frage von F0rcehunterBatch & Shell4 Kommentare

Hallo zusammen, ich versuche mich gerade an einer Batch, die folgende Arbeitsschritte durchführen soll: In dem Ordner "C:\Produktdaten_zur_Uebernahme" befinden ...

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

Batch & Shell
Mittels Batch Ordner umbenennen und Dateien kopieren
gelöst Frage von held.christophBatch & Shell12 Kommentare

Guten Tag allerseits Ich bin absoluter Leihe und konnte Dank mehr oder weniger grossen Suche in den Foren bereits ...

Batch & Shell
Batch-Skript Schleife älteste Datei umbenennen
Frage von pentaddBatch & Shell9 Kommentare

Hallo zusammen, Ich möchte per Batch-Skript folgendes umsetzen: älteste Datei in einem Ordner finden Datei umbenennen: vom Dateinamen die ...

Neue Wissensbeiträge
Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 StundenSicherheit5 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 4 StundenSicherheit4 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 4 StundenSicherheit12 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Heiß diskutierte Inhalte
Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1031 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell29 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen19 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...