redi1337
Goto Top

Per Batch eine Zahl innerhalb einer Ini Datei verändern

Hallo Freunde,

ich habe ein kleines Problem:

ich habe eine Ini Datei in der an einer bestimmten Stelle eine Zahl steht,
die ich gerne einmal pro woche erhöhen möchte.

Da ich mich mit Batch dateien nicht so gut auskenne hoffe ich das ihr eine Lösung habt face-smile
Ich bin mir nicht mal sicher ob das was ich hier versuche überhaupt möglich ist ?!

mfg redi

Content-Key: 186865

Url: https://administrator.de/contentid/186865

Printed on: April 25, 2024 at 15:04 o'clock

Member: TsukiSan
TsukiSan Jun 21, 2012 at 14:31:01 (UTC)
Goto Top
Hallo redi1337,

um deine Frage eventuell positiv zu beantworten, benötigen wir mehr Details.

Gib uns doch bitte mal ein Besipiel der Datei - also wie sie aufgebaut ist - damit wir wissen, an welcher Stelle was erhöht werden soll.

Gruss
Tsuki
Member: redi1337
redi1337 Jun 21, 2012 at 14:42:08 (UTC)
Goto Top
Hallo,

Danke für die schnelle Antwort face-smile

die Ini-Datei steuert das Archivsystem bzw. den direkt Drucker.

[Destination]
Department=DL-BEK
Cabinet=2012
Folder=06
Job=*NEWJOB*
SearchCriteria1=unbekannt
SearchCriteria2=*PRINTJOB*
SecondsSame=30

Ich müsste im prinzip in diesem Fall die Zahl bei "Folder" als das 06 erhöhen auf 07 sobald der nächste Monat beginnt und wenn es bei 12 angekommen ist dann soller wieder von 1 anfangen.

Das ganze gibt es auch noch mit den Kalenderwochen, da steht dann bei "Folder" z.b. 23 und soll dann in der nächsten woche auf 24 erhöht werden. Hier auch wieder sobald 52 erreicht ist soll wieder bei 1 angefangen werden.

mfg redi
Member: TsukiSan
TsukiSan Jun 21, 2012 updated at 15:07:47 (UTC)
Goto Top
Hallo redi,

jetzt weiss ich ehrlich gesagt nicht, ob es bei Batch eine Restwertrechnung gibt.
Das liese sich in VBS sicher gestalten. Nur gibt es einen Haken: Bei den Monaten sehe ich noch keine Probleme. Die kriegt man easy raus mit
MeineVariable = Month(Date)
Aber die aktuelle Kalenderwoche. Da gibt es meiner Meinung nach keine vorgeferkelte Funktion. Das muss man sich selber basteln. Wäre auch kein so grosses Problem, muss man nur viel tippen face-wink Hinzu kommt, dass es mal Jahre mit nur 51 Wochen oder mit 53 Wochen geben kann.
Jupp, das wirft gerade neue Fragezeichen auf.

Muss man mal überlegen.
Das manipulieren deiner INI-Datei wäre ein kinderspiel, aber meine Gedanken etwas weiter oben....

Gib uns mal etwas Zeit.

Gruss
Tsuki
Member: bastla
bastla Jun 21, 2012 updated at 15:21:48 (UTC)
Goto Top
@tsuki
Aber die aktuelle Kalenderwoche. Da gibt es meiner Meinung nach keine vorgeferkelte Funktion.
Schau Dir mal "DatePart("ww", ...)" an ...
jetzt weiss ich ehrlich gesagt nicht, ob es bei Batch eine Restwertrechnung gibt.
set /a R=Monat %% 12
- liefert allerdings natürlich für 12 den (Modulo-)Wert 0 ...

... daher eher die einfache Variante (Monat wird ja nur immer um 1 erhöht)
if %Monat% gtr 12 set /a Monat-=12
Grüße
bastla
Member: TsukiSan
TsukiSan Jun 21, 2012 updated at 16:10:37 (UTC)
Goto Top
Hallo bastla,

Schau Dir mal "DatePart("ww", ...)" an ...
das ist interessant. Danke vielmals! Ich habe mir bisher die KWs immer händisch errechnet. Ich danke dir!
Man könnte es natürlich auch über http abfragen, aber was, wenn die Seite mal nicht erreichbar ist oder man ist gerade nicht online face-wink

Nevertheless: hier mal ein kleines Script bezüglich des Monats in der INI-Datei aktuell zu halten. Das lässt sich sicherlich noch verschönern grins
Set FSO = CreateObject("Scripting.FileSystemObject")  
MeineDaten = Split(FSO.OpenTextFile("redi1337.txt", 1).ReadAll, "Folder=")  

a = month(Date)
If a < 10 then a = "0" & a  
b = MeineDaten(0) & "Folder=" & a & Mid(MeineDaten(1),3,Len(MeineDaten(1)))  

Set MeineDatei = FSO.CreateTextFile("redi1337_neu.txt",True).Write(b)  
MeineDatei.Close

Set FSO = Nothing
Set MeineDatei = Nothing

Wscript.Echo "Daten aktualisiert"  

Beste Grüße

Tsuki

[Edit]
Das Script ist in VBS, nicht in Batch.
[/Edit]
Member: TsukiSan
TsukiSan Jun 21, 2012 at 15:47:55 (UTC)
Goto Top
Hallo bastla,

ich nochmal face-wink

- liefert allerdings natürlich für 12 den (Modulo-)Wert 0 ...
Ja, um die Modula-Rechnung ging es mir hauptsächlich (Restwertrechnung).
Der kleine Schönheitsfehler dabei ist natürlich die NULL.
Das lässt sich sicher definieren. Allerdings wusste ich nicht, ob batch das auch kann. Nun weiss ich es face-wink Bin kein so guter Bätscher face-wink

Danke und viele Grüße

Tsuki
Member: bastla
bastla Jun 21, 2012 at 19:32:42 (UTC)
Goto Top
Hallo Tsuki!
b = MeineDaten(0) & "Folder=" & a & Mid(MeineDaten(1),3)
würde auch genügen (die Länge des Teilstrings muss eigentlich nur bei der Funktion "TEIL()" in einer Excel-Formel angegeben werden), und die Formatierung des Monatswertes könntest Du auch einfach per
a = Right(Month(Date) + 100, 2)
erledigen ...

Grüße
bastla