Zahl um 1 erhoehen in vbs oder bat
Auslesen einer Zahl aus einer Datei anschliessend incrementieren
Hallo,
ich habe folgende Problemstellung.
Auslesen einer Zahl aus einer Datei z.B. "last" . Die Datei beinhaltet nur diese eine 4-5 stellige Zahl
Diese Zahl bzw. die Variable in welche sie eingelesen wird um 1 erhoehen und einen rename machen xxxx%variable.exe zu xxxx.exe
Fehlerfall
Schlaegt dieser Vorgang fehl soll er solange wiederholt werden bis eine max. Zahl z.B. 10000 erreicht ist. Dann Ausgabe eines Fehlers in eine LogDatei und per "net send" an 2 Rechner.
Beenden des Scriptes.
Erfolgsfall
Tritt irgendwann bevor die max. Zahl erreicht ist der erfolgsfall ein, möchte ich die Zahl zurück in die Datei schreiben, die ursprüngliche Datei soll überschrieben werden.
Erfolgsmeldung ins Log und "net send" an jene gleiche 2 Rechner.
Hintergrund:
Es wird täglich eine Datei heruntergeladen deren Dateiname abweicht. Sie hat eine laufende Nummer kann aber auch mal um 2 oder 3 Nummern incrementiert werden. Um diese Datei per Script an alle Rechner zu verteilen sollte sie immer den gleichen Namen haben.
Mein frommster Wunsch ist nun dies per Windows batch bzw. cmd zu machen leider liegt dies ausserhalb meiner Fähigkeiten, da es Konstrukte wie ich sie von Pascal kenne nicht gibt (glaub ich) . ( i :=i + 1 ) oder fussgesteuerte Schleifen.
Alternativ wäre auch vbs möglich muss aber auf NT4 laufen.
Wie kann ich so etwas hinbekommen ?? Google war mir nicht sehr hilfreich.
Danke für Eure Mithilfe
gruss bruce
Hallo,
ich habe folgende Problemstellung.
Auslesen einer Zahl aus einer Datei z.B. "last" . Die Datei beinhaltet nur diese eine 4-5 stellige Zahl
Diese Zahl bzw. die Variable in welche sie eingelesen wird um 1 erhoehen und einen rename machen xxxx%variable.exe zu xxxx.exe
Fehlerfall
Schlaegt dieser Vorgang fehl soll er solange wiederholt werden bis eine max. Zahl z.B. 10000 erreicht ist. Dann Ausgabe eines Fehlers in eine LogDatei und per "net send" an 2 Rechner.
Beenden des Scriptes.
Erfolgsfall
Tritt irgendwann bevor die max. Zahl erreicht ist der erfolgsfall ein, möchte ich die Zahl zurück in die Datei schreiben, die ursprüngliche Datei soll überschrieben werden.
Erfolgsmeldung ins Log und "net send" an jene gleiche 2 Rechner.
Hintergrund:
Es wird täglich eine Datei heruntergeladen deren Dateiname abweicht. Sie hat eine laufende Nummer kann aber auch mal um 2 oder 3 Nummern incrementiert werden. Um diese Datei per Script an alle Rechner zu verteilen sollte sie immer den gleichen Namen haben.
Mein frommster Wunsch ist nun dies per Windows batch bzw. cmd zu machen leider liegt dies ausserhalb meiner Fähigkeiten, da es Konstrukte wie ich sie von Pascal kenne nicht gibt (glaub ich) . ( i :=i + 1 ) oder fussgesteuerte Schleifen.
Alternativ wäre auch vbs möglich muss aber auf NT4 laufen.
Wie kann ich so etwas hinbekommen ?? Google war mir nicht sehr hilfreich.
Danke für Eure Mithilfe
gruss bruce
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7021
Url: https://administrator.de/forum/zahl-um-1-erhoehen-in-vbs-oder-bat-7021.html
Ausgedruckt am: 07.04.2025 um 04:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo
Wenn es nur eine Datei ist, die dann auch auf dem Quellrechner gelöscht werden kann, hier ein Vorschlag aus dem Win-Total-Forum.
Ich gehe mal davon aus, das es um Dateien innerhalb derselben Arbeitsgruppe geht die verteilt oder irgendwie gesichert werden sollen. So ganz klar ist mir das halt aufgrund der Fragestellung nicht. Ich füge mal eine batch als Beipiel an:
@echo OFF
Rem Routine zum sichern eines Ordners auch mit Verzeichnisstruktur in einem anderen Verzeichnis im Netz
Rem oder einer weiteren Partition bzw. Festplatte lokal.
Rem Diese Batch ist einfach in den Ordner zu kopieren, dessen Daten gesichert werden sollen. Wichtig ist,
Rem das der Speicherpfad (z.B "C:\Temp\sicher") für anlegen und löschen noch angepasst bzw. ergänzt werden muss!!!
Rem Ist also nur gedacht, für wichtige Daten, die nicht bereits im Netz oder so gesichert werden.
Rem Die Anzahl der Sicherungen mit name "kopieDATUM" die erhalten bleiben ergibt sich aus Skip=1 oder mehr.
Rem Jxxxxxxxx Fxxxxx 17.01.05
Echo Sichere Verzeichnis
pause
for /f "tokens=1,2,3,4,5" %%a in ('date /t') do set date=%%b
net use T: \\pentium4\aufzeichnung
md T:\aufzeichnung\sicher\kopie%date%
xcopy "*.*" T:\aufzeichnung\sicher\kopie%date%\*.* /c /s /r /y /i
Echo Lösche jetzt das alte Verzeichnis
pause
FOR /F "skip=2 tokens=*" %%a IN ('DIR /O-D /B t:\aufzeichnung\sicher\kopie*') DO (
ECHO Lösche jetzt die alte Sicherung
RD /s /q "t:\Temp\sicher\%%a")
RD /s /q "t:\Temp\sicher\%%a"
net use T: /delete
Ende
So für jeden Rechner in der Arbeitsgruppe muss natürlich dann für net use der entpsrechende Pfad angegeben sein etc. . Selbst bei professioneller Software die zur Verteilung von Softwarepaketen etc. dient - wie z.B. Empirum - muss bekannt sein, welche Rechner in welcher Domäne vorhanden sind und wie/wo installiert werden soll.
Der Ordner auf den bei den Clients kopiert werden soll, muss natürlich freigegeben und der Schreibschutz entfernt sein.
CU
J.F.
PS:
bei
RD /s /q "t:\Temp\sicher\%%a")
RD /s /q "t:\Temp\sicher\%%a"
hatte ich jetzt vergessen den Pfad anzupassen. Müsset
nätürlich in dem Beispiel lauten "t:\aufzeichnung\sicher ....."
Gruss
J.F.
Vieleicht hilft's
Gruß
Peter
Wenn es nur eine Datei ist, die dann auch auf dem Quellrechner gelöscht werden kann, hier ein Vorschlag aus dem Win-Total-Forum.
Ich gehe mal davon aus, das es um Dateien innerhalb derselben Arbeitsgruppe geht die verteilt oder irgendwie gesichert werden sollen. So ganz klar ist mir das halt aufgrund der Fragestellung nicht. Ich füge mal eine batch als Beipiel an:
@echo OFF
Rem Routine zum sichern eines Ordners auch mit Verzeichnisstruktur in einem anderen Verzeichnis im Netz
Rem oder einer weiteren Partition bzw. Festplatte lokal.
Rem Diese Batch ist einfach in den Ordner zu kopieren, dessen Daten gesichert werden sollen. Wichtig ist,
Rem das der Speicherpfad (z.B "C:\Temp\sicher") für anlegen und löschen noch angepasst bzw. ergänzt werden muss!!!
Rem Ist also nur gedacht, für wichtige Daten, die nicht bereits im Netz oder so gesichert werden.
Rem Die Anzahl der Sicherungen mit name "kopieDATUM" die erhalten bleiben ergibt sich aus Skip=1 oder mehr.
Rem Jxxxxxxxx Fxxxxx 17.01.05
Echo Sichere Verzeichnis
pause
for /f "tokens=1,2,3,4,5" %%a in ('date /t') do set date=%%b
net use T: \\pentium4\aufzeichnung
md T:\aufzeichnung\sicher\kopie%date%
xcopy "*.*" T:\aufzeichnung\sicher\kopie%date%\*.* /c /s /r /y /i
Echo Lösche jetzt das alte Verzeichnis
pause
FOR /F "skip=2 tokens=*" %%a IN ('DIR /O-D /B t:\aufzeichnung\sicher\kopie*') DO (
ECHO Lösche jetzt die alte Sicherung
RD /s /q "t:\Temp\sicher\%%a")
RD /s /q "t:\Temp\sicher\%%a"
net use T: /delete
Ende
So für jeden Rechner in der Arbeitsgruppe muss natürlich dann für net use der entpsrechende Pfad angegeben sein etc. . Selbst bei professioneller Software die zur Verteilung von Softwarepaketen etc. dient - wie z.B. Empirum - muss bekannt sein, welche Rechner in welcher Domäne vorhanden sind und wie/wo installiert werden soll.
Der Ordner auf den bei den Clients kopiert werden soll, muss natürlich freigegeben und der Schreibschutz entfernt sein.
CU
J.F.
PS:
bei
RD /s /q "t:\Temp\sicher\%%a")
RD /s /q "t:\Temp\sicher\%%a"
hatte ich jetzt vergessen den Pfad anzupassen. Müsset
nätürlich in dem Beispiel lauten "t:\aufzeichnung\sicher ....."
Gruss
J.F.
Vieleicht hilft's
Gruß
Peter