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

Laufender Tag im Jahr und Zähler.

Frage Entwicklung Batch & Shell

Mitglied: Schmiddy

Schmiddy (Level 1) - Jetzt verbinden

20.07.2005, aktualisiert 22.07.2005, 11076 Aufrufe, 5 Kommentare

Hallo zusammen,

habe folgende Problemchen...

Habe eine Datei mit dem Namen "kkkA5xxxva520.pm"
kkk steht für den Laufenden Tag im Jahr. Heute für den 20.07.2005 wäre das "201".

Wie mache ich es, dass ich den laufenden Tag bekomme, und Ihn in den Dateinamen einfügen kann?
Gibt es da schon Konvertierungsfunktionen oder muss man sich das alles selbst zusammen basteln?

Wie programmiere ich denn in Batch einen Zähler?
Den Wert des Zählers muß bei jeder Datei inkrementiert werden.
xxx können genutzt werden für den Zähler.
Dachte mir das so, dass man in den Systemvariablen den Wert auf 1 setzt und das bei jedem neuen Tag. Wie mache ich das aber bei einem Neustart?

Bei Neustart kein Zählerreset.
Bei Datumswechsel Zählerreset.

Wäre sehr dankbar für Eure Hilfe!
Mitglied: Schmiddy
20.07.2005 um 14:30 Uhr
[code]
d = CDate(date())
Set fs = CreateObject("Scripting.FileSystemObject")
IF fs.FileExists("c:\test1.txt")THEN
fs.DeleteFile "c:\test1.txt", true
End IF
Set txtfile = fs.createTextFile("c:\test1.txt", ForWriting, false)
txtfile.WriteLine datepart("y",d)
txtfile.Close
[/code]

Also das habe ich eben mit VBS hinbekommen.
Gibt mir also den Tag aus. Nun muss ich en Wert aus der c:\test1.txt in den dateinamen schreiben wie mache ich denn das am besten?

LG Schmiddy
Bitte warten ..
Mitglied: Biber
20.07.2005 um 21:23 Uhr
Moin, Schmiddy,

nur aus sportlichen Gründen mal eine reine Batchlösung.
Unterstellt: dieser Batch wird aufgerufen, um eine vorhandene Datei umzubenennen.
--> also <font color=green>kkkxxxRename.bat Dateiname </font>
Lässt sich aber natürlich auch umstricken zu
--> SetzeNächstenDateinamen.bat (ohne Parameter)

01.
:: -------Beispiel kkkxxxRename.bat 
02.
@echo off 
03.
::- unterstellt: Parameter [LW:][Pfad\]Dateiname zum Umbenennen nötig 
04.
::wenn nur eine Variable gesetzt werden soll, die nächsten beiden Zeilen auskommentieren 
05.
If (%1)==() echo Aufruf: %~n0 [LW:][Pfad\]Dateiname zum Umbenennen 
06.
If (%1)==() goto PanicExit 
07.
 
08.
if not defined OldDate set OldDate=%date% 
09.
if defined kkk  if %OldDate%==%date% goto kkkHabIch 
10.
set Monat=%date:~3,2% 
11.
set Tach=%date:~0,2% 
12.
IF %Monat%==01 Set /a TageVorbei = 0 
13.
IF %Monat%==02 Set /a TageVorbei = 31                      
14.
IF %Monat%==03 Set /a TageVorbei = 31 +28 
15.
IF %Monat%==04 Set /a TageVorbei = 31 +28 +31 
16.
IF %Monat%==05 Set /a TageVorbei = 31 +28 +31 + 30 
17.
IF %Monat%==06 Set /a TageVorbei = 31 +28 +31 + 30 + 31 
18.
IF %Monat%==07 Set /a TageVorbei = 31 +28 +31 + 30 + 31 +30  
19.
IF %Monat%==08 Set /a TageVorbei = 31 +28 +31 + 30 + 31 +30 +31 
20.
:: etc..lies selber vom Kalender ab *gg 
21.
 
22.
Set /a kkk=%TageVorbei% + %Tach% 
23.
 
24.
:kkkHabIch   
25.
 
26.
if not exist %temp%\%kkk%.txt echo 1000>%temp%\%kkk%.txt 
27.
set /p nxxx=&lt%temp%\%kkk%.txt 
28.
set /a nxxx= %nxxx% + 1 
29.
set cxxx=%nxxx:~1,3% 
30.
echo Alter Dateiname: %1  neuer Dateiname: %kkk%%~n1%cxxx%.%~x1 
31.
:: hier dann vielleicht ein Rename oder ein copy oder whatever 
32.
:: Beispiel rename %1 %kkk%%~n1%cxxx%.%~x1 ....... oder rename %1 %kkk%A5%cxxx%va520.~x1  
33.
:: ergibt z.B rename v:\data\test.xyz 201data003.xyz ...oder rename v:\data\test.xyz 201A5003va520.xyz 
34.
:: oder eben Set NaechsterDateiname=%kkk%A5%cxxx%va520 
35.
:: und dann Zähler hochsetzen in der Datei, wenn nichts gescheitert ist: 
36.
if errorlevel 0 echo %nxxx%>%temp%\%kkk%.txt 
37.
For %%i in (nxxx cxxx Tach Monat) do set %%i= 
38.
:PanicExit 
39.
::-------Beispiel kkkxxxRename.bat
Sollte auch resistent gegen zwischenzeitliches Booten sein und auch gegen Arbeiten über die Mitternachtsgrenze hinweg.
Dafür die %OldDate%-Zeilen.

Hope It Helps

Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: Schmiddy
22.07.2005 um 12:56 Uhr
Danke schön klappt wirklich super!!!!!

LG Schmiddy
Bitte warten ..
Mitglied: Biber
22.07.2005 um 13:57 Uhr
Freut mich, Schmiddy,

als bekennender Perfektionist noch der Hinweis:
ich würde auch die kkk-Variable grundsätzlich auf drei Stellen formatieren (falls 2006 das Bätchelchen immer noch im Einsatz ist *gg), also:

Set /a kkk=%TageVorbei% + %Tach% ......ändern in

Set /a kkk=1000+%TageVorbei% + %Tach%
Set kkk=%kkk:~1,3%


Schönes und vor allem baldiges Wochenende
Frank / der Biber aus Bremen
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

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

Frage von xbast1x zum Thema Windows Server ...

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

Frage von Motte990 zum Thema Microsoft Office ...

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

Frage von Y3shix zum Thema Grafikkarten & Monitore ...