[BATCH] Hilfe beim Programmieren

sa322

Stammgast
Also hab ja schon ein paar Grundkentnisse mit Batch aber hab glaub noch nit alles 100%...

Also kommen wir zur Sache...

Ich will folgendes:

1.
Beim öffnen der Batchdatei soll sich ein Programm öffnen z.B xx.exe
Dann soll es einen Screenshot davon machen und ihn unter C:\\User\xx\eigene Dateien Speichern oder ihn evtl. sogar noch per E-Mail verschickt?.
Ist das so möglich?

und

2.
Beim öffnen der Batch soll ein Text kommen und den PC in 5 min runterfahren. Ausser man bricht ihn mit
Code:
shutdown -a
ab.

Leider funst bei mir so nicht:
Code:
 shutdown -s -t 300 -f -c "Comment"

Ausserdem würd ich zur 2. auch noch die funktion
Code:
-i
hinzufügen. Was steht eim damit zur Verfügung und was kann es?

Gibt es da Unterschiede je nach Betriebssystem? Wenn ja bitte für XP und Vista.

Sind hoffentlich nicht zuviele Extrawünsche aber währe auch schon i.o wenn es annähernd ran kommt.

THX
 
Zuletzt bearbeitet:

pagefault

Inaktiv
Beim Shutdown-Befehl kann ich dir weiterhelfen:

Seit Windows XP verlangt shutdown.exe zwingend die Angabe eines Grundes. Bei deinem Beispiel fehlt dir dieser Parameter ( -d ):
Code:
Syntax: shutdown [-l | -s | -r | -a] [-f] [-m \\Computer] [-t xx]
                 [-c "Kommentar"] [-d up:xx:yy]

  Keine Argumente Zeigt diese Meldung an (wie -?).
  -i              Zeigt eine grafische Benutzeroberfläche an (muss die erste
                  Option sein).
  -l              Abmelden (kann nicht mit der Option -m verwendet werden).
  -s              Fährt den Computer herunter.
  -r              Fährt den Computer herunter und startet ihn neu.
  -a              Bricht das Herunterfahren des Systems ab.
  -m \\Computer   Remotecomputer zum Herunterfahren/Neustarten/Abbrechen.
  -t xx           Zeitlimit für das Herunterfahren, in xx Sekunden.
  -c "Kommentar"  Kommentar für das Herunterfahren (maximal 127 Zeichen).
  -f              Erzwingt das Schließen ausgeführter Anwendungen ohne Warnung.
  [b]-d [u][p]:xx:yy[/b] Grund (Code) für das Herunterfahren:
                  u = Benutzercode
                  p = Code für geplantes Herunterfahren
                  xx = Hauptgrund (positive ganze Zahl kleiner als 256)
                  yy = Weiterer Grund (positive ganze Zahl kleiner als 65536)

Das hier funktioniert unter XP Pro - vorausgesetzt, dass der angemeldete Benutzer ausreichende Rechte hat:
Code:
shutdown -s -t 300 -f -d :1:1
 

pagefault

Inaktiv
Und was kann oder muss ich als Grund angeben?
Wer lesen kann, ist klar im Vorteil:
-d [p]:xx:yy Grund (Code) für das Herunterfahren:
u = Benutzercode
p = Code für geplantes Herunterfahren
xx = Hauptgrund (positive ganze Zahl kleiner als 256)
yy = Weiterer Grund (positive ganze Zahl kleiner als 65536)

Weil das nicht ganz so leicht verdaulich ist, habe ich dir extra ein Beispiel angegeben - hast du das denn nicht ausprobiert? :confused:

-d :1:1 reicht, denn die Parameter u und p müssen (weil in eckigen Klammern [] ) nicht zwingend angegeben werden. Bei xx und yy kannst du deiner Fantasie (fast) freien Lauf lassen...

Ich habe mir sagen lassen, dass 1 eine positive ganze Zahl kleiner als 256 sei

http://de.wikipedia.org/wiki/Syntax
 

sa322

Stammgast
Code:
shutdown -i -s -t 300 -f -d :1:1 -c "Fahre in 5 min runter..."

Geht net (bin im moment mit Vista aber wirds später noch mit XP probieren)

Funst aber wenn ich folgendes bei cmd.exe eingebe:

Code:
shutdown -s -t 20 -d 1:1

Bringt dann eine Meldung Windows wird in weniger als 1 min Heruntergefahren und fährt dann nach 20 sec runter.

Aber bei der Bat:
Bringt nur Milliarden von malen dass:
 

Anhänge

  • Screenshot_001.jpg
    Screenshot_001.jpg
    84,9 KB · Aufrufe: 11
Zuletzt bearbeitet:

sa322

Stammgast
Ja warum ist das nicht gut?

Also hab jetzt einfach irgendwas geschrieben und es funst ja soweit mal gut aber dann:
 

Anhänge

  • Screenshot_001.jpg
    Screenshot_001.jpg
    37,4 KB · Aufrufe: 8
Zuletzt bearbeitet:

pagefault

Inaktiv
Ja warum ist das nicht gut?

Weil deine Batchdatei so sich selber rekursiv aufruft, wie du selber an deinem Screenshot sehen kannst.

Du kannst deiner Batchdatei einen x-beliebigen Namen geben, nur nicht den von anderen Programmen im Suchpfad, die du nachher in deiner Batchdatei aufrufen willst.

Wenn deine Batchdatei unbedingt shutdown.bat heissen muss, kannst du alternativ die shutdown.exe innerhalb deiner Batchdatei mit vollem Pfad aufrufen, dann funktioniert es auch wieder:

Code:
C:\WINDOWS\system32\shutdown.exe -s -t 20 -d p:1:1

Nachtrag: Im Beispiel den Parameter p (für geplanten Shutdown) eingefügt
 

sa322

Stammgast
Funst nun bei Vista würde es so auch bei XP funsen? Teste es dann mal in ein paar Tagen.

Kannst du mir auch noch Tipps dazu geben?
Beim öffnen der Batchdatei soll sich ein Programm öffnen z.B xx.exe
Dann soll es einen Screenshot davon machen und ihn unter C:\\User\xx\eigene Dateien Speichern oder ihn evtl. sogar noch per E-Mail verschickt?.
Ist das so möglich?
 
Zuletzt bearbeitet:
Öffne am besten den Notepad.

>> Start >> Ausführen >> Notepad

Jetzt tippst du ein :

Code:
shutdown -s -t 300

Jetzt kannst du die Datei als .cmd speichern.

>> Speichern unter ... >> Dateiname = xxx.cmd
Dateityp = Alle Dateien

Jetzt kannst du das Skript öffnen. Wenn du Administrator - Rechte hast sollte alles klappen.
Ansonsten musst du das Programm als Administrator ausführen.

Zum Abbrechen verwendest du den Code den du ja schon weisst :

Code:
shutdown -a
 

sa322

Stammgast
Öffne am besten den Notepad.

>> Start >> Ausführen >> Notepad

Jetzt tippst du ein :

Code:
shutdown -s -t 300

Jetzt kannst du die Datei als .cmd speichern.

>> Speichern unter ... >> Dateiname = xxx.cmd
Dateityp = Alle Dateien

Jetzt kannst du das Skript öffnen. Wenn du Administrator - Rechte hast sollte alles klappen.
Ansonsten musst du das Programm als Administrator ausführen.

Zum Abbrechen verwendest du den Code den du ja schon weisst :

Code:
shutdown -a
Check nicht ganz was du meinst und wovon du redest.
 
Den Screenshot machst du wie folgt:

Drücke alt und die PrintScreen.

Gehe jetzt in Paint >> Start >> Alle Programme >> Zubehör >> Paint

Drücke nun :

ctrl und V

Speichere das ganze Bild als .gif Datei

Verwende Anhänge verwalten um deingif Bild hochzuladen.
Veröffentliche dein Thread.
 

pagefault

Inaktiv
Den Screenshot machst du wie folgt:...
Vermutlich weiss sa322 das auch - sein Wunsch ist, die Screenshots automatisch aus einer Batch-Datei heraus erstellen zu lassen.

Also hab nun noch 2 Probleme
Wie kann ich per Batch ein Screenshot machen und ihn per E-Mail versenden?
Das hat nun eigentlich nicht mehr direkt etwas mit Batch-Programmierung zu tun, denn dein Wunsch ist einfach zu "programmieren":
Code:
@echo off
mein_spezial_screenshot_programm.exe screenshot1.jpg
mein_spezial_email_programm.exe screenshot1.jpg e-mailadresse
shutdown (Parameter wie gehabt)

Den Knackpunkt sehe ich eigentlich eher bei den beiden Spezial-Programmen.
 

sa322

Stammgast
Denkst du so ein Programm kann man mit C++ oder Delphi etc. erstellen?

Übrigens ist mir noch so ne doofe idee gekommen, kann ich per Batch Tastatureingaben (--> Print Screen Taste) simulieren?
 
Zuletzt bearbeitet:

pagefault

Inaktiv
Denkst du so ein Programm kann man mit C++ oder Delphi etc. erstellen?
Bestimmt - vermutlich musst du nicht mal selber programmieren - es gibt vermutlich bereits Utilities, die die gewünschten Aufgaben erledigen.
Aber im Sinne einer Übung, wäre es bestimmt lehrreich. In Batch-Dateien kannst du grundsätzlich jedes Programm verwenden, welches sich (evtl mit Parametern) so starten lässt, dass es sein "Ding" tut und sich nachher wieder vom Acker macht.
Ein Programm, welches sich nur über's GUI bedienen lässt, macht in einer Batch-Datei nicht viel her ;)

Übrigens ist mir noch so ne doofe idee gekommen, kann ich per Batch Tastatureingaben (--> Print Screen Taste) simulieren?
Interessanter Gedanke - wirf mal einen Blick auf AutoIt - vielleicht kannst du damit das gewünschte herstellen.
 

pagefault

Inaktiv
Auto IT wirkt ja schön und gut aber wie funktioniert es?
Wenn du AutoIT3 installierst, hast du auch einen Ordner mit Beispielen auf der Platte.

Der mitgelieferte Editor Scite kennt die AutoIt Syntax und unterstützt dich beim Programmieren. Auch kannst du dein Programm zum Testen /Debuggen direkt aus dem Editor heraus starten.

Hier gibt es die komplette Dokumentation:
http://www.autoitscript.com/autoit3/docs/

Im Forum findet sich zu vielen Fragen eine Lösung:
http://www.autoitscript.com/forum/index.php?act=idx

und falls du es lieber auf deutsch magst, bitte sehr:
Forum: http://www.autoit.de/
Tutorial: http://wiki.autoit.de/wiki/index.php/Tutorial
 

sa322

Stammgast
Hab das Programm nicht gechekt aber hier noch was spannendes:

Habe doch noch etwas spannendes gefunden: Nähmlich dass http://msdn.microsoft.com/de-de/library/8c6yea83(en-us).aspx hier, ist zwar Englisch, habe es aber dann mit der Google Toolbar übersetzt habs zwar nicht ganz gechekt aber hoffentlich könnt ihr helfen.

Kann man eigentlich mit PrntScreen den Screenshot direkt speichern anstatt in die Zwischenablage?

THX
 
Oben