carp-catcher
Goto Top

Batch, counter (in txt dokoument einfügen)

Ein script um ein Protokoll zu schreiben.

hallo,
ich habe mir mal was gebastelt und zwar eine batch datei,
mit der man den PC herunterfahren kann und dann datum und zeit in ein protokoll übertragen werden.(txt dokument)
Sieht so aus:

@echo off
echo in wie viel sekunden soll heruntergefahren werden ?
set /p nachricht=Bitte eingeben:
shutdown -s -t %nachricht%
echo C:\Users\laurenz\Desktop\zickzack.txt
echo _____________________________________ >> zickzack.txt
echo PC sollte am %date% >> zickzack.txt
echo um %time% heruntergefahren werden. >> zickzack.txt
echo nach %nachricht% sekunden >> zickzack.txt
exit

im txt dokument sieht das so auß:
_____________________________________
PC sollte am 18.07.2011
um 20:01:20,01 heruntergefahren werden.
nach 2 sekunden
_____________________________________
PC sollte am 18.07.2011
um 20:01:24,86 heruntergefahren werden.
nach 6 sekunden


es sollte aber noch mit einem Zähler versehen sein.
also in etwa so aussehen:

_____________________________________
1.
PC sollte am 18.07.2011
um 20:01:20,01 heruntergefahren werden.
nach 2 sekunden
_____________________________________
2.
PC sollte am 18.07.2011
um 20:01:24,86 heruntergefahren werden.
nach 6 sekunden

das der dann halt immer so weiterzählt.

Wenn jemand eine Lösung weiß bitte sagen.
Wenns garnet möglich ist bitte auch sagen, dann brauch ich mir net mehr den kopf drüber zu zerbrechen.

Ich danke euch im vorraus

LG

Content-Key: 169975

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

Ausgedruckt am: 29.03.2024 um 01:03 Uhr

Mitglied: Friemler
Friemler 19.07.2011 um 11:35:38 Uhr
Goto Top
Hallo carp-catcher,

teste mal folgendes:
@echo off & setlocal


set "ProtocolFile=%UserProfile%\Desktop\zickzack.txt"  


echo In wieviel Sekunden soll heruntergefahren werden?
set /p "delay=Bitte eingeben: "  


::Wenn das Script zum ersten mal gestartet wird, existiert die Protokolldatei
::noch nicht. Deshalb eine leere Datei anlegen, damit die folgenden Schleifen
::keine Fehler verursachen und den Zähler auf eins setzen (für den ersten Eintrag).
if not exist "%ProtocolFile%" (  
  type NUL > "%ProtocolFile%"  
  set "Cntr=1"  
)

::Nach der Nummer der letzten Zeile suchen, die mit einem "_" beginnt  
::Diese Nummer um eins erhöht ist die Zeile mit dem Zähler
for /f "delims=:" %%c in ('findstr /b /n /l "_" "%ProtocolFile%"') do (  
  set /a "LastEntry=%%c+1"  
)

::Protokolldatei vollständig einlesen
::Wenn die eben bestimmte Zeile gelesen wird,
::den Zähler auslesen und um eins erhöhen
for /f "tokens=1,2 delims=:." %%l in ('findstr /n "^" "%ProtocolFile%"') do (  
  if "%%l" equ "%LastEntry%" set /a "Cntr=%%m+1"  
)


>>"%ProtocolFile%" echo _  
>>"%ProtocolFile%" echo %Cntr%.  
>>"%ProtocolFile%" echo PC sollte am %date%  
>>"%ProtocolFile%" echo um %time% heruntergefahren werden.  
>>"%ProtocolFile%" echo Nach %delay% Sekunden.  

echo shutdown -s -t %delay%

Hilfe zum FINDSTR-Befehl liefert findstr /?, zum FOR-Befehl siehe for /? bzw. mein Tutorial zur FOR-Schleife.

Gruß
Friemler
Mitglied: Skyemugen
Skyemugen 19.07.2011 um 11:53:45 Uhr
Goto Top
Aloha,

nun entweder so:
@echo off & setlocal
set "Z=C:\Users\laurenz\Desktop\Anzahl.txt"  
set /a Anzahl=0
if exist "%Z%" set /p Anzahl=<"%Z%"  
set /a Anzahl+=1
>"%Z%" echo %Anzahl%  

echo In wie vielen Sekunden soll heruntergefahren werden ?
set /p nachricht=Bitte eingeben:
shutdown -s -t %nachricht%
echo C:\Users\laurenz\Desktop\zickzack.txt
(echo _ 
echo %Anzahl%
echo PC sollte am %date%
echo um %time% heruntergefahren werden.
echo nach %nachricht% Sekunden
echo\)>>"zickzack.txt"  
goto :eof

oder eben so:
@echo off & setlocal enabledelayedexpansion
set "D=C:\Users\laurenz\Desktop\zickzack.txt"  
if exist "%D%" (goto :Zahl) else (goto :Datei)  
set /a Anzahl=0

:Zahl
for /f "usebackq" %%s in ("%D%") do (  
set Var=%%s
set "Anzahl=!3!"  
set "3=!2!"  
set "2=!1!"  
set "1=!Var!"  
)

:Datei
set /a Anzahl+=1

echo In wie vielen Sekunden soll heruntergefahren werden ?
set /p nachricht=Bitte eingeben:
shutdown -s -t %nachricht%
echo C:\Users\laurenz\Desktop\zickzack.txt
(echo _ 
echo %Anzahl%
echo PC sollte am %date%
echo um %time% heruntergefahren werden.
echo nach %nachricht% Sekunden
echo\)>>"zickzack.txt"  
goto :eof

greetz André

edit: genau wie gestern; kurz mal am Telefon *gg* schon friemelt sich jemand zwischen, hehe
Mitglied: carp-catcher
carp-catcher 19.07.2011 um 13:52:04 Uhr
Goto Top
hey,
danke euch beiden face-smile
hat super funktioniert , 1000 dank face-smile


LG
Mitglied: Friemler
Friemler 19.07.2011 um 13:58:10 Uhr
Goto Top
Hallo carp-catcher,

dann markiere doch bitte noch den Beitrag als gelöst.

Gruß
Friemler
Mitglied: carp-catcher
carp-catcher 20.07.2011 um 18:58:15 Uhr
Goto Top
hallo,

oke mach ich
sry bin neu hier

LG