login  Naam:   Wachtwoord: 
Registreer je!
 Forum

bat file naar text file (Opgelost)

Offline mwthomas - 27/10/2009 09:18 (laatste wijziging 27/10/2009 11:11)
Avatar van mwthomasLid Hallo iedereen

IK ben onlang begonnen met het leren om een bat file te schrijven. Dit lukt al aardig en ik heb nu ook een scriptje geschreven die pingt naar de verschillende server.

Als het pingen lukt krijg ik status:goed, anders status:bad (de datum en tijd waarop de status verandert wordt weggeschreven in een tekstbestand).
Maar, nu zit ik met 1 probleempje:
Namelijk, er is een variabele (%beginsrvdc1%) die ik wegschrijf naar een tekstbestandje. Maar iedere keer dat ik die wegschrijf, krijg ik de melding: ECHO is off (uit).
Normaal gezien krijg je dit als je gewoon "echo" typt.
Dus veronderstel ik dat er iets mis moet zijn met de waarde van de variabele. Maar ik vind niet wat.


Dit is de output in het tekstbestand:
Nieuwe sessie
ECHO is off (uit).
di 27/10/2009 11:10:08,46

Die echo is off(uit) zou moeten zijn:
status:goed of status:slecht.

Ik hoop dat jullie mij verder kunnen helpen.
De verkeerde variabele is:%beginsrvdc1%
code : http://www.plaatscode.be/137898/

12 antwoorden

Gesponsorde links
Offline Bart - 27/10/2009 10:24 (laatste wijziging 27/10/2009 10:26)
Avatar van Bart PHP expert Krijg je dat te zien in het tekstbestand of in je console?

Edit: en probeer eens een reactie te schrijven die WEL makkelijk te lezen is. Ben eerst een half uur bezig om alle spelfouten eruit te halen en vervolgens te begrijpen.
Offline mwthomas - 27/10/2009 10:40 (laatste wijziging 27/10/2009 10:47)
Avatar van mwthomas Lid Dit heb ik eens getest met bij status:goed, dit te plaatsen:
echo %beginsrvdc1%
En zowel in de console als in het tekstbestand, krijg ik diezelfde fout.
btw: dit is de volledige code:
http://plaatscode.be/137899/
Offline MiST - 27/10/2009 11:00 (laatste wijziging 27/10/2009 11:03)
Avatar van MiST Lid als je > typt en dan een bestandsnaam, wordt de output naar een bestand geschreven. Is dit van enige help?
Offline Bart - 27/10/2009 11:06 (laatste wijziging 27/10/2009 11:07)
Avatar van Bart PHP expert Probleem opgelost:
Oud:
  1. echo. >> c:\files\ping\log\srvdc1.txt


Nieuw:
  1. echo . >> c:\files\ping\log\srvdc1.txt


Edit: (uitleg)
Na echo moet je altijd een spatie in acht nemen, en dan pas de tekst die je weg wilt schrijven naar de tekstfile.
Offline mwthomas - 27/10/2009 11:11
Avatar van mwthomas Lid Bart, bedankt voor de reactie. Maar jammergenoeg lost dit mijn probleem niet op. Wat je met jou methode doet is gewoon een "." wegschrijven in een txt bestand.

Het is bij de variabele %beginsrvdc1% dat het probleem ligt.
Offline Bart - 27/10/2009 11:18
Avatar van Bart PHP expert Hmm, je hebt gelijk. Alleen wanneer ik de code kopieeer en zelf uitvoer krijg ik netjes in mijn file:
  1. Nieuwe sessie
  2. status:bad
  3. di 27-10-2009 11:16:14,35

Offline mwthomas - 27/10/2009 11:25
Avatar van mwthomas Lid Hmm, als ik die kort code kopieer en in een nieuw batbestand plaats, krijg ik weer die fout.
Hoe kunnen we in godsnaam met eenzelfde input een andere output krijgen!?

*confused*
Offline Mario - 27/10/2009 11:39
Avatar van Mario Crew algemeen Probeer het zo eens :

  1. @echo off
  2.  
  3. SET logfile="c:\files\ping\temp\srvdc1.txt"
  4. SET server_to_ping="srvdc1"
  5.  
  6. ping %server_to_ping% | find "Reply" > nul
  7.  
  8. if errorlevel 1 (
  9. SET serverstatus=status:bad
  10. ) else (
  11. SET serverstatus=status:ok
  12. )
  13.  
  14. echo status %server_to_ping% is %serverstatus% >> %logfile%
Offline mwthomas - 27/10/2009 11:47 (laatste wijziging 27/10/2009 11:57)
Avatar van mwthomas Lid Ok,
Dankzij Mario heb ik ontdekt dat ik met deze code:

  1. @echo off
  2.  
  3. :algemeen
  4.  
  5. SET logfile=c:\files\ping\temp\srvdc1.txt
  6. SET server_to_ping=srvdc1
  7.  
  8. dir > c:\files\ping\serverping.txt
  9. ping %server_to_ping% | find "Reply" > nul
  10.  
  11. if errorlevel 1 (
  12. set var=status:bad
  13. ) else (
  14. set var=status:goed
  15. )
  16. echo %logfile%
  17. echo %server_to_ping%
  18. echo %var%
  19. pause


de onderste variabelen geeft die weer.
Maar als ik de variabelen wil weergeven in de if en else lukt dit niet. Weet iemand misschien hierop een antwoord?
Offline Bart - 27/10/2009 11:56
Avatar van Bart PHP expert
Mario schreef:
Probeer het zo eens :

[..code..]
Je kan beter het woord bytes (zoals TS al gebruikte) of TTL gebruiken. Kan voorkomen dat sommige systemen Engels zijn of Nederlands, dus dan is Reply niet Reply maar Antwoord en dan krijg je "status:bad" terwijl de host wel up is.
Offline Mario - 27/10/2009 12:06 (laatste wijziging 27/10/2009 12:13)
Avatar van Mario Crew algemeen Aangezien je als eerste regel een @echo off doet, zul je je helemaal niets te zien krijgen. Dat is net de bedoeling als je je echo naar het scherm uitzet.
Je zult deze dus tijdelijk terug aan/uit moeten zetten.

  1. @echo on
  2. echo %logfile%
  3. echo %server_to_ping%
  4. echo %var%
Offline mwthomas - 27/10/2009 13:02
Avatar van mwthomas Lid Heb ik geprobeerd maar dan krijg ik :
echo is on(aan) te zien.
Het enige wat ik gevonden heb die wel werkt (dankzij mario), is de variabelen in een tekstbestand zetten buiten de if en else constructie.

Toch iedereen bedankt!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s