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

Printed on: April 19, 2024 at 22:04 o'clock

Member: Friemler
Friemler Jul 19, 2011 at 09:35:38 (UTC)
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
Member: Skyemugen
Skyemugen Jul 19, 2011 at 09:53:45 (UTC)
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
Member: carp-catcher
carp-catcher Jul 19, 2011 at 11:52:04 (UTC)
Goto Top
hey,
danke euch beiden face-smile
hat super funktioniert , 1000 dank face-smile


LG
Member: Friemler
Friemler Jul 19, 2011 at 11:58:10 (UTC)
Goto Top
Hallo carp-catcher,

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

Gruß
Friemler
Member: carp-catcher
carp-catcher Jul 20, 2011 at 16:58:15 (UTC)
Goto Top
hallo,

oke mach ich
sry bin neu hier

LG