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

Batch Aktualisierung von Dateinamen

Frage Entwicklung Batch & Shell

Mitglied: 68023

68023 (Level 1)

31.07.2008, aktualisiert 01.08.2008, 3800 Aufrufe, 6 Kommentare

Hallo,

ich bedanke mich vorab für Tips zu folgendem Problem:

In einem Verzeichnis befinden sich Dateien wie [bezeichnung]_[jahr]_[monat].[dateiendung]

Meine Aufgabe ist es, die beiden Datumsangaben Jahr und Monat aktuell zu halten.

Ich bin leider nicht so trittsicher in Batch-Dateien. Alles was ich zu Stande bekommen habe ist,
dass nach einem festen Dateinamen gesucht wird und dieser um das Datum ergänzt wird:

01.
@echo off 
02.
set Jahr=%date:~-4%  
03.
set Monat=%date:~-7,2%  
04.
ren data.xls "data_%Jahr%_%Monat.xls" 
05.
pause
Wie könnte ich
1) zunächst alle Dateinamen IN EINEM VERZEICHNIS nach "2008" durchsuchen
2) bei diesen Dateien den aktuellen Monat nicht anhängen sondern aktualisieren

Vielen lieben Dank
Nico
Mitglied: bastla
31.07.2008 um 14:53 Uhr
Hallo prinzipal87 und willkommen im Forum!

Wie sehr kann man/frau sich darauf verlassen, dass alle Dateinamen aus den genannten Teilen, getrennt durch "_", bestehen? Wenn das gesichert wäre, müsste eigentlich
01.
@echo off & setlocal 
02.
set "Muster=*_2008_*.*" 
03.
set "Verz=D:\EIN VERZEICHNIS" 
04.
 
05.
set Jahr=%date:~-4% 
06.
set Monat=%date:~-7,2% 
07.
 
08.
for %%i in ("%Verz%\%Muster%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%Jahr%_%Monat%%%~xi"
genügen.

Grüße
bastla
Bitte warten ..
Mitglied: 68023
31.07.2008 um 15:35 Uhr
Hallo bastla,

herzlichen Dank für die Willkommensgrüße und deine Hilfe.

Ich versuche deine Code genau nachzuvollziehen, steige aber nicht hinter die 2. FOR-Schleife sowie die REN-Zeile. Ob du dazu kurz ein Sätzchen schreiben würdest?

Problem jetzt:
Das Skript aktuallisiert das Datum nicht, Dateinamen bleiben unverändert... Was mache ich falsch?

01.
@echo off & setlocal 
02.
cls 
03.
 
04.
echo Alle Berichte werden mit dem aktuellen Monat versehen! 
05.
echo Sollen wirklich alle Dateinamen bearbeitet werden? 
06.
 
07.
set choice= 
08.
set /p choice=j/n  
09.
 
10.
if "%choice%" == "j" goto rename 
11.
if "%choice%" == "n" goto END 
12.
 
13.
:rename 
14.
echo Dateinamen werden aktualisiert... 
15.
set "Muster"=*_2008_*.*" 
16.
set "Verzeichnis"=T:\Neuer Ordner" 
17.
 
18.
set Jahr=%date:~-4%  
19.
set Monat=%date:~-7,2%  
20.
 
21.
for %%i in ("%Verzeichnis%\%Muster%") do  
22.
for /f "delims=_" %%a in ("%%~ni") do 
23.
ren "%%i" "%%a_%Jahr%_%Monat%%%~xi" 
24.
echo %i% Dateien geändert  
25.
 
26.
 
27.
:END 
28.
echo Zum Beenden beliebige Taste! 
29.
pause > NUL
Wenn ich nun n Eingebe und bestätige springt er brav zu :END.
Gebe ich j ein, passiert nichts und die Konsole schließt sich...
Was ist falsch hier?

Als kleines Addon hätte ich gerne eine Ausgabe die mir die Anzahl der geänderten Daten anzeigt. So wie ich es mir gedacht habe scheint es nicht zu funktionieren, gell?

Vielen vielen Dank!
Nico
Bitte warten ..
Mitglied: bastla
31.07.2008 um 16:00 Uhr
Hallo prinzipal87!

Ich versuche deine Code genau nachzuvollziehen
Der Versuch hat leider schon bei Deiner Zeile 15 geendet, wo, so wie auch in Zeile 16, ein überzähliges Anführungszeichen unmittelbar vor dem "=" steht.

Die Zeilen 21 bis 23 dürfen nicht aufgeteilt werden, sondern müssen (wie in meiner Zeile 8) nur durch Leerzeichen getrennt in der selben Zeile stehen.

Für Dein Add-On fehlt noch der eigentliche Zähler.

Noch eine Anmerkung zur Sicherheitsabfrage: Nur wenn "n" (klein geschrieben, nur ein Zeichen) eingegeben wird, erfolgt tatsächlich der Sprung zu ":END" - sicherer wäre etwa:
01.
set /p choice=j/n 
02.
if /i "%choice%" neq "j" goto :END
Damit würde die Bearbeitung nur bei Eingabe von "j" oder (wegen "/i") "J" erfolgen.
... steige aber nicht hinter die 2. FOR-Schleife sowie die REN-Zeile.
Mit der zweiten "for"-Schleife wird der Dateiname lt erster Schleife (%%~ni) - siehe dazu am Ende von "for /?" - anhand des Trennzeichens "_" einzelne Teile ("tokens") zerlegt. Da nur der erste Teil interessiert, kann die Angabe von "tokens=1" unterbleiben. Dieser erste Teil steht dann in %%a und wird im "ren"-Befehl verwendet.

Beim Umbenennen muss zunächst die Datei (samt Pfad) angegeben werden - %%i - und danach nur der neue Name + Typ. Dieser neue Namen setzt sich zusammen aus: erster Teil des alten Namens (bis zum ersten "_") - %%a - den Trennzeichen "_" und Jahr und Monat. Da der Dateityp gleich bleiben soll, wird dieser mit "%%~xi" dem Dateipfad in %%i entnommen (inkl "." vor dem Typ).

[Edit] Zusammen mit der Ermittlung der Anzahl wäre der relevante Teil (ab Zeile 21) dann:
01.
set /a Anzahl=0 
02.
for %%i in ("%Verzeichnis%\%Muster%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%Jahr%_%Monat%%%~xi" && set /a Anzahl+=1 
03.
echo %Anzahl% Dateien geändert 
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: 68023
31.07.2008 um 16:25 Uhr
Hallo,

gutert Hinweis mit zu der Abfrage, danke schön.

Letzter Durchgang, sorry:

01.
@echo off & setlocal 
02.
cls 
03.
 
04.
echo Alle Berichte werden mit dem aktuellen Monat versehen! 
05.
echo Sollen wirklich alle Dateinamen bearbeitet werden? 
06.
 
07.
set choice= 
08.
set /p choice=j/n  
09.
if /i "%choice%" neq "j" goto :END 
10.
 
11.
:rename 
12.
echo Dateinamen werden aktualisiert... 
13.
set "Muster=*_2008_*.xls" 
14.
set "Verzeichnis=T:\DCAA-TV intern\Krüger\Makowski\Neuer Ordner" 
15.
 
16.
set Jahr=%date:~-4%  
17.
set Monat=%date:~-7,2%  
18.
 
19.
for %%i in ("%Verzeichnis%\%Muster%") do for /f "delims=_" %%a in ("%%~ni") do ren "%%i" "%%a_%Jahr%_%Monat%%%~xi"  
20.
 
21.
:END 
22.
echo Zum Beenden beliebige Taste! 
23.
pause > NUL
Script läuft fehlerfrei durch, aber die Dateinamen ändern sich nicht... Wieder ein Tipfehler?

Nico
Bitte warten ..
Mitglied: bastla
31.07.2008 um 16:46 Uhr
Hallo prinzipal87!

Wieder ein Tipfehler?
Eher ein Umlaute-Problem (durch "Krüger" im Pfad) - wenn Du an den Anfang des Batches ein "chcp 1252" setzt, wird auch in CMD ANSI anstatt ASCII verwendet.

Grüße
bastla
Bitte warten ..
Mitglied: 68023
01.08.2008 um 14:11 Uhr
Hallo bastla,

genial!
Danke schön!!!

Nico
Bitte warten ..
Ähnliche Inhalte
Sonstige Systeme
Batch Dateinamen zerlegen
Frage von MummelSonstige Systeme5 Kommentare

Hallo Liebe Leute, hoffe mir kann einer helfen. Ich soll eine Batch schreiben, die eine abfrage macht. (Soll ein ...

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
Dateinamen einer ausgeführten Batch verändern
Frage von DD-GamerBatch & Shell5 Kommentare

Hallo, ich möchte den Dateinamen der auszuführenden .bat um eins erhöhen nachdem ich sie ausgeführt habe. Das würde dann ...

Batch & Shell
Batch rar und der Dateiname
gelöst Frage von Fastbyte23Batch & Shell17 Kommentare

Guten Tag, ich habe eine Aufgabe meines Ausbilder bekommen und versuche mich gerade zum ersten mal! an Batch Dateien. ...

Neue Wissensbeiträge
Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 MinuteSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 14 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 17 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 18 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...