Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Screenshot erstellen (mit Zusatztool) und via ftp hochladen

Frage Entwicklung Batch & Shell

Mitglied: Soidberg

Soidberg (Level 1) - Jetzt verbinden

08.06.2007, aktualisiert 18.10.2012, 7184 Aufrufe, 39 Kommentare

Hallo,

ich suche nach einer Möglichkeit mit einer .bat auf einem USB Stick einen Screenshot zu machen. Dazu suche ich ein Zusatztool was nicht installiert werden muss und über die .bat ansprechbar ist.

Der User soll die .bat (wird später mal eine .exe) ausführen und es soll ein Screenshot gemacht werden der direkt über die .bat/.exe auf einen FTP hochgeladen wird.

Wer hilft mir nach diesem Tool suchen und bastelt mt mir den passenden Code dazu?

Eventuell habt Ihr ja auch ganz andere Ansätze. Ich habe mir natürlich die bereits bestehenden Threads angeschaut, konnte aber leider nix passendes finden bis auf den Code zum ftp connect sowie Lösungen die auf Installtools bauen und somit auch nicht das passende ist.

Gruß Soidberg
39 Antworten
Mitglied: Egbert
08.06.2007 um 20:59 Uhr
Hallo Soidberg,

ohne Dir jetzt ein komplettes Script zu schreiben.

Für die Screenshots würde ich IRFANVIEW nehmen, hat auch eine wunderbare command Line schnittstelle.
Als Beispiel:

i_view32.exe /capture=0 /convert=c:\capture_$U(%d%m%Y_%H%M%S).jpg

damit nimmst Du den ganzen Bildschirm in eine Datei auf die gleich an einer entsprechenden Stelle abgelgt wird.

mit ftp -s:inputfile.txt kannst Du das ganze dann übertragen

wobei die inputfile.txt so auszusehen hat

open ftp.server.com << steht stellvertretend für den FTP Servernamen
Benutzername
Kennwort
put und hier der hochzuladende Dateiname
bye

Ein wenig Kosmetik drumrum und schon geht das ganze

Gruß
Egbert
Bitte warten ..
Mitglied: Rafiki
08.06.2007 um 22:13 Uhr
Ich weiss nicht ob Snagit vom USB stick ohne installation läuft.
Probiers doch mal aus.

http://www.snagit.de/
Bitte warten ..
Mitglied: Soidberg
09.06.2007 um 01:47 Uhr
Ich weiss nicht ob Snagit vom USB stick ohne
installation läuft.
Probiers doch mal aus.

http://www.snagit.de/

Nein läuft es nicht. Ich besitze zwar eine portable Variante aber das ist ein zu großes Kaliber.

Die Idee mit Irfan ist aber genial. Das habe ich hier und mache mich morgen mal ans basteln.

@Egbert

Ein kompletter Code ist auch nicht unbedingt nötig, denke das bekomme ich hin. Mir hat nur der Aufhänger gefehlt.

Vielen lieben Dank, ich werde berichten.

Gruß Soidberg
Bitte warten ..
Mitglied: Soidberg
09.06.2007 um 14:33 Uhr
So hier der bisherige Code:

~~~SNIP-Batch~~~
Echo off

cd "%CD%\data"

i_view32.exe /capture=0 /convert=%CD%\screenshot.jpg

ftp -s:inputfile.txt
~~~SNAP-Batch~~~

~~~SNIP-Inputfile~~~
open ftphost..de
Agent012
***
put screenshot.jpg
bye
~~~SNAP-Inputfile~~~

Jetzt ist wie im Leben auch, es müssten noch ein paar Zusätze hinzukommen.


1) durch eine .ini einen festen Zeitabstand oder Anzahl der Bilder festlegen.

Wie könnte man das den mitumsetzen?

Gedachter Ablauf:

Kunde startet das Kundenmodul, dieses ruft beim Start die sreenshot.bat mit auf...

Die .bat startet und macht zum Beispiel alle 15 Sekunden (für 2 Minuten) ein Bild. Die Sekunden sowie die Dauer soll in einer externen .ini stehen. *Eventuell kann man die .ini auslesen lassen und mittels "Ping-Pause" umsetzen?

Die Bilder sollen fortlaufend im Namen nummeriert werden (Screenshot1.jpg etc) und hochgeladen werden.

*Aufruf zum Brainstorming*

Gruß Soidberg
Bitte warten ..
Mitglied: miniversum
09.06.2007 um 17:40 Uhr
Die ini kannst du mit ner For Schleife und nem Find auslesen (gabs schon ein paar mal hier in diesem Bereich).
Die Werte kansn tud dan in Variabeln hinterlegen z.B. %dauer% und %abstand%
Den abstand kannst du wie schon geschrieben über den Ping machen.
Die dauer bekommst du über mehrere Schleifendurchläufe realisiert indem du einfach die dauer durch den abstand teilst. Dann weißt du ja wie oft die Schleife wiederholt werden soll.

miniversum
Bitte warten ..
Mitglied: Soidberg
09.06.2007 um 19:05 Uhr
Die ini kannst du mit ner For Schleife und
nem Find auslesen (gabs schon ein paar mal
hier in diesem Bereich).
Die Werte kansn tud dan in Variabeln
hinterlegen z.B. %dauer% und %abstand%
Den abstand kannst du wie schon geschrieben
über den Ping machen.
Die dauer bekommst du über mehrere
Schleifendurchläufe realisiert indem du
einfach die dauer durch den abstand teilst.
Dann weißt du ja wie oft die Schleife
wiederholt werden soll.

miniversum

Ich beschäftige mich zur Zeit mit Batch, bin aber von For Schleifen noch etwas entfernt. Ich habe hier zwar schon massige Beispiele gesehen und mir ist auch aufgefallen das sich meistens recht viel vom Code ähnelt. Begreifen kann ich es aber noch nicht wirklich.

Dazu kommt das ich auch keine Ahnung hätte wie man das mit dem bisherigen Code vereint.

Würdest du mir den Gefallen tun und mir den Code zur Verfügung stellen? Eventuell hast du auch noch einen Link mit einer einfachen aber ausführlichen Erklärung zu FOR Schleifen. Sozusagen für Anfänger.

Hoffe auf Verständnis

Gruß Soidberg
Bitte warten ..
Mitglied: bastla
09.06.2007 um 22:07 Uhr
Hallo Soidberg!

Nachdem miniversum die Kopfarbeit geleistet hat, könnte ich ein wenig Handarbeit beitragen ...

Benötigt werden zunächst zwei Textdateien:
"snap.ini"
01.
;Abstand in Sekunden 
02.
15 
03.
;Dauer in Sekunden 
04.
120
Mit ";" am Beginn einer Zeile wird diese als Kommentar interpretiert.
"ftpinit.txt"
01.
open ftphost..de 
02.
Agent012 
03.
*** 
04.
 
Beachte, dass "snap.ini" keine und "ftpinit.txt" eine Leerzeile am Ende haben.

Eigentlich lassen sich die beiden Dateien auch in die Batchdatei integrieren - besonders viel Vorteil bringt es vermutlich nicht, sie getrennt zu halten, aber da es zumindest hinsichtlich der "ini"-Datei so gewünscht war ...

Die Batchdatei dazu:
01.
@echo off & setlocal 
02.
set "iniFile=snap.ini" 
03.
set "ftpInit=ftpinit.txt" 
04.
set "Input=inputfile.txt" 
05.
set "ScrshotName=screenshot" 
06.
set "ScrshotType=jpg" 
07.
set /a Nummer=100001 
08.
set Abstand= 
09.
del %ScrshotName%*.%ScrshotType% 2>nul 
10.
for /f "usebackq eol=;" %%i in ("%iniFile%") do ( 
11.
	if not defined Abstand ( 
12.
		set /a Abstand=%%i 
13.
	) else ( 
14.
		set /a Dauer=%%i 
15.
16.
17.
set /a Anzahl=%Dauer%/%Abstand%+%Nummer% 
18.
for /l %%i in (%Nummer%,1,%Anzahl%) do call :Snap %%i 
19.
copy /y "%ftpInit%" "%Input%" <b>>nul</b> 
20.
for %%i in ("%ScrshotName%*.%ScrshotType%") do echo put "%%i" >>"%Input%" 
21.
echo bye >>"%Input%" 
22.
ftp -s:"%Input%" 
23.
goto :eof 
24.
:Snap 
25.
<b>set Nr=%1</b> 
26.
"data\i_view32.exe" /capture=0 /convert="%Scrshot<b>Name</b>%<b>%Nr:~1%</b>.%ScrshotType%" 
27.
if "%1" neq "%Anzahl%" ping -n %Abstand% 127.0.0.1 >nul 
28.
goto :eof
Im Prinzip müsste ein "ping" mehr erfolgen (bei 15 pings gibt es ja nur 14 1-sekündliche Wartezeiten dazwischen), aber vermutlich wird die Sekunde Zeitunterschied ohnehin von "Irfanview" verbraucht.

Getestet habe ich nur den Ablauf, ohne dabei "Irfanview" oder "ftp" zu verwenden - deren Aufruf entspricht aber dem oben genannten Beispiel.

Die Anzahl der Nullen im Dateinamen lässt sich übrigens in der Zeile "set /a Nummer=" festlegen.

Grüße
bastla

[Edit] Korrektur Batch-Code: Name Screenshot-Datei (siehe Soidbergs Post unten) und etwas Kosmetik - alle Änderungen/Ergänzungen hervorgehoben [/Edit]
Bitte warten ..
Mitglied: Soidberg
10.06.2007 um 22:59 Uhr
Ach Bastla, abermals vielen Dank.

Miniversum tut sicher gut daran wenn er es erstmal technisch erläutert. Nur bei mir Anfänger reicht das halt auch nur bis zum "theoretischen" Verständnis.

Wenn ich mir jetzt mal deinen Code anschaue, oje das hätte Wochen gedauert. Die Fachmänner hier (in diesem Fall erneut du) schütteln das aus dem FF.

So, ich habe es mal getestet. Die .jpg´s tragen den Namen 100001.jpg, 100002.jpg usw.

Wenn ich mir den Code so anschaue sollten die doch einen anderen tragen:

screenshot100001.jpg, screenshot100002.jpg usw.

Weiterhin scheint es ein Problem mit dem einfügen der Dateinamen in die %input% Datei zu geben.

Es wird erfolgreich die ftpinit.ini nach %input% kopiert auch der bye-Befehl wird geschrieben, dazwischen fehlen aber die Dateinamen.

Denke mal der Fehler könnte hier liegen:

for %%i in ("%ScrshotName%*.%ScrshotType%") do echo put "%%i">>"%Input%"

Da ja die Dateinamen in dieser Form nicht existieren.

Wenn du mal in das komplette Pack schauen möchtest langt eine PN.

*Anmerkung:*

1) Ist es möglich die snap.ini und die ftpinit.txt zusammenzufügen so das man nur eine "configarationsdatei hat? Wenn nicht ist das absolut okay.

2) Wäre es möglich den Code so umzubauen das die Screenshots direkt nach dem schießen hochgeladen werden? Nicht erst wenn alle fertig sind?

Gruß Soidberg
Bitte warten ..
Mitglied: Soidberg
11.06.2007 um 00:11 Uhr
Habe den Dateinamenfehler gefunden:

/convert="%ScrshotName%%1.%ScrshotType%"

Dann klappt es auch soweit mit dem eintragen. Jetzt habe ich einen Ordner "screener" erstellt. Der cmdLog sagt auch das die Dateien hochgeladen wurden aber sie sind nicht zu finden???

Ich habe mal einen Screenshot erstellt:

http://img530.imageshack.us/img530/2011/sshot3cr9.png

Die Dateien sind aber definitiv nicht auf dem FTP, ich bin etwas verwirrt.

EDIT

Okay es lag am BINARY Modus, der hatte gefehlt.

Jetzt muss ich nur noch herausfinden wie ich die Screenshots durch IrfanView so klein wie möglich halte, eventuell als png speichern lassen. Danach poste ich hier den ganzen Code damit auch andere etwas von haben (Codeschnipsel).

Gruß Soidberg
Bitte warten ..
Mitglied: bastla
11.06.2007 um 02:38 Uhr
Hallo Soidberg!

Würde ich Neujahrsvorsätze fassen, hätte einer davon etwa gelautet: "Du sollst nicht bereits getesteten Code zu verschönern meinen müssen und dann auch noch eine Zwischenversion posten ..."

Deine Korrektur habe ich mittlerweile auch oben vorgenommen, und inzwischen wird auch wie eigentlich beabsichtigt nummeriert (ohne "1" vorneweg) ...

Zu den beiden ".ini/init"-Dateien: Wie schon erwähnt, bringen sie getrennt kaum Vorteile - ich integriere einmal versuchsweise beide, mit der Option, die "ftpinit.txt" beim Aufruf als Argument zu übergeben:
01.
@echo off & setlocal 
02.
 
03.
::Abstand und Dauer in Sekunden 
04.
set /a Abstand=15 
05.
set /a Dauer=120 
06.
 
07.
::Dateinamenformat (Anzahl Nullen) 
08.
set /a Nummer=100001 
09.
 
10.
set "Input=inputfile.txt" 
11.
if [%1] neq [] copy /y "%~1" "%Input%">nul & goto :weiter 
12.
 
13.
::::::::::::::::::::::::::::::::::::::::::::: 
14.
::ftpinit, falls nicht als Argument übergeben 
15.
 
16.
echo open ftphost..de >"%Input%" 
17.
echo Agent012 >>"%Input%" 
18.
echo *** >>"%Input%" 
19.
echo binary  >>"%Input%" 
20.
 
21.
::ftpinit-Ende 
22.
::::::::::::::::::::::::::::::::::::::::::::: 
23.
 
24.
:weiter 
25.
set "ScrshotName=screenshot" 
26.
set "ScrshotType=jpg" 
27.
del %ScrshotName%*.%ScrshotType% 2>nul 
28.
 
29.
set /a Anzahl=%Dauer%/%Abstand%+%Nummer% 
30.
for /l %%i in (%Nummer%,1,%Anzahl%) do call :Snap %%i 
31.
 
32.
for %%i in ("%ScrshotName%*.%ScrshotType%") do echo put "%%i" >>"%Input%" 
33.
echo bye >>"%Input%" 
34.
ftp -s:"%Input%" 
35.
goto :eof 
36.
 
37.
:Snap 
38.
set Nr=%1 
39.
"data\i_view32.exe" /capture=0 /convert="%ScrshotName%%Nr:~1%.%ScrshotType%" 
40.
if "%1" neq "%Anzahl%" ping -n %Abstand% 127.0.0.1 >nul 
41.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Soidberg
11.06.2007 um 08:48 Uhr
Hallo Bastla,

Zitat-Anfang

Würde ich Neujahrsvorsätze fassen, hätte einer davon etwa gelautet: "Du sollst nicht bereits getesteten Code zu verschönern meinen müssen und dann auch noch eine Zwischenversion posten ..."

Zitat-Ende

Sorry, das verstehe ich nicht. Meinst du mein Verhalten?

Es tut mir leid wenn du meine Korrektur als Angriff gewertest hast. Es liegt mir völligst fern Deine Batchkünste unter den Scheffel zu stellen. Ganz im Gegenteil, ich schätze deine Gedult und dein Wissen.

Ich teste später Deine neue Version und werde Dir selbstverständlich berichten ob und wenn wo es hängt.

An dieser Stelle sei nochmal ein herzliches DANKESCHÖN ausgesprochen.

EDIT/ Frage:

Wie müssen den die Argumente übergeben werden?

Nette Grüße Soidberg
Bitte warten ..
Mitglied: Soidberg
11.06.2007 um 10:24 Uhr
Ich habe jetzt ein Problem aus dem ich nicht ganz schlau werde, deshalb Poste ich es mal in einem neuen Beitrag und editiere nicht.

Der Login klappt nicht. Host wird gefunden, User wird angenommen aber beim PW sagt er mir:

LogIn incorrect

Wenn ich die Daten 1:1 aus der inputfile.txt nehme dann klappt es. Ich habe die Datei jetzt zich mal auf Schreibfehler hin untersucht und kann wirklich keinen Tippfehler (Leerzeichen etc) erfassen.

Wie geschrieben, die Logindaten sind okay. Ich konnte keine Leezeichen oder ähnliches finden.

Jemand eine Idee woran es liegen könnte?

Gruß Soidberg
Bitte warten ..
Mitglied: miniversum
11.06.2007 um 10:26 Uhr
Ich denke bastla meinte eher das er den Geposteten Code ncith getestet hatte. Mach ich auch manchmal (zugegeben).

Im Prinzip war meine technische Erklärung auch so gemeint wie bastla sie umgesetzt hat. Ich hätte es also auch so gemacht.
Das die 1 Sekunde beim Ping Befehl nicht genau hinhauen muß man hinnehmen. Immerhin sprechen sir ja von einem PC. Da kann man sowieso keine Echtzeit erwarten....
Das Auslesen der Werte aus der ini hätte ich vielleicht anders gelöst, weil ich es persönlich einfach besser zu handhaben finde.
also anstatt
for /f "usebackq eol=;" %%i in ("%iniFile%") do (
if not defined Abstand (
set /a Abstand=%%i
) else (
set /a Dauer=%%i
)
)

eher so:
for /f "eol=; delims==" %%i in ('find /i "Abstand" "%iniFile%"') do set Abstand=%%j
for /f "eol=; delims==" %%i in ('find /i "Dauer" "%iniFile%"') do set Dauer=%%j
wobei dann ind er ini Datei halt ncith nur die Zahlen untereinander stehen, sondern sondern in der Form:
Abstand=15
Dauer=120

Klar das png vormat ist denke ich besser geeignet.

Welche Argumente meinst du? In bastlas code werden, wird einfach nur die "screen2ftp.bat" (oder wie auch immer sdie heist) aufgerufen wird die "inputfile.txt" mit den Werten aus der Batch erzeugt.
Wird lautet der Aufruf "screen2ftp.bat meineftpdatei.txt" so wird diese als "inputfile.txt" benutzt.
Allerdings ist ein zudsammenfügen der ini und der txt Datei für das ftp hier nicht wirklich gut, besonders weil ohne die Übergabe eines Arguments die inputfile.txt ja neu geschrieben wird udn daher die Werte für Abstand und Dauer dort ncith mehr drin stehen, müßte man also im Code anpassen, wäre aber nur eine kleine Änderung.

miniversum
Bitte warten ..
Mitglied: miniversum
11.06.2007 um 10:28 Uhr
Schonmal im der Batch die Zeilen:
echo open ftphost..de >"%Input%"
echo Agent012 >>"%Input%"
echo * >>"%Input%"
echo binary >>"%Input%"
die Leerzeichen vor den > entfernt?
also so:
echo open ftphost.de>"%Input%"
echo Agent012>>"%Input%"
echo
*>>"%Input%"
echo binary>>"%Input%"

miniversum
Bitte warten ..
Mitglied: Soidberg
11.06.2007 um 10:37 Uhr
Schonmal im der Batch die Zeilen:
> echo open ftphost..de
>"%Input%"
> echo Agent012
>>"%Input%"
> echo * >>"%Input%"
> echo binary
>>"%Input%"
die Leerzeichen vor den > entfernt?
also so:
> echo open
ftphost.de>"%Input%"
> echo
Agent012>>"%Input%"
> echo
*>>"%Input%"
> echo binary>>"%Input%"

miniversum

Hy,

ich habe den Fehler gefunden. Mein Chef hat den LogIn geändert *Kopfkratz*.

Gruß Mexagon
Bitte warten ..
Mitglied: Soidberg
11.06.2007 um 12:11 Uhr
So, es geht dem Erfolg entgegen. :0)

Ich habe jetzt beide Varianten von Bastla getestet. Beide funktionieren sehr gut allerdings werde ich mich wohl für die 2te Variante mit intergrierten Daten entscheiden.

Ich habe mich jetzt mit meinem Abteilungsleiter kurzgeschlossen, es ist gewünscht das in der Batch ein Stammftp angegeben wird, wenn unsere Bearbeiter die Bilder in Ihren Ftpaccount haben möchte, müssen Sie halt eine .txt mit Ihren Daten (Host, User, PW, Verzeichnis) angeben.


Naja, es bleiben 2 Herausforderungen übrig:

1) Lässt sich der Upload nach jeden Screenshot machen? Hintergrund, es sollen Kundensessions im Kundenmodul erfasst werden und das kann auch schon mal mehrere Stunden dauern. Wenn dann erst noch 1 Stunde lang Bilder hochgeschoben werden ist das zu lang. Die jetzige Fassung eignet sich hervorragend für kurze Einsätze.

Also am besten wäre es wenn die Bilder nach jedem Screenshot hochgeschoben würden.

2) Es wäre günstig wenn man die Dauer und den Abstand gegebenenfalls auch über ein Argument angeben könnte. Im Prinzip genau das gleiche wie es jetzt mit den ftpdaten ist.
Wird nix übergeben läuft eine intergrierte Dauer sowie Abstand, mit Argument wäre es dann wieder individuell einstellbar.

Pefekt wäre es wenn man beides (ftpdaten sowie Dauer&Abstand) in einer Datei übergeben kann.

Beispiel:
~~Snip~~~
;Dauer in Sekunden
120
;Abstand in Sekunden
5

;FTPDaten
open ftphost.Berater13.iberio.de
Berater13
*
Binäry
cd html
cd Berater13

~~~Snap~~~

Diese Datei könnten unsere Mitarbeiter dann einfach anpassen falls Sie andere Daten (Ihr Hostfach, Dauer, Abstand) benötigen.

Ansonsten müsste man für ALLE ( ca 45) Berater eine persönliche .exe builden in den zumindest die Beraterhostfächer intergriert sind und den Abstand&Dauer über eine .ini regeln.

Gruß Soidberg
Bitte warten ..
Mitglied: miniversum
11.06.2007 um 14:41 Uhr
Zu 2)
Also das ganze in einer Datei würd ich jetzt, ohne in bastlas Posting zu arg reinzufummeln so, machen.
01.
@echo off & setlocal 
02.
 
03.
::Dateinamenformat (Anzahl Nullen) 
04.
set /a Nummer=100001 
05.
 
06.
set "Input=inputfile.txt" 
07.
if [%1] neq [] ( 
08.
for /f "eol=; tokens=1,2 delims==" %%i in ('find /i "Abstand=" "%~1"') do set Abstand=%%j 
09.
for /f "eol=; tokens=1,2 delims==" %%i in ('find /i "Dauer=" "%~1"') do set Dauer=%%j 
10.
if exist "%Input%" del "%Input%" 
11.
for /f "eol=; tokens=1,2 delims==" %%i in ('find /i "FTP=" "%~1"') do echo %%j>>"%Input%" 
12.
 
13.
) else ( 
14.
 
15.
::Abstand und Dauer in Sekunden 
16.
set /a Abstand=15 
17.
set /a Dauer=120 
18.
 
19.
::::::::::::::::::::::::::::::::::::::::::::: 
20.
::ftpinit, falls nicht als Argument übergeben 
21.
 
22.
echo open ftphost..de >"%Input%" 
23.
echo Agent012 >>"%Input%" 
24.
echo *** >>"%Input%" 
25.
echo binary  >>"%Input%" 
26.
 
27.
::ftpinit-Ende 
28.
::::::::::::::::::::::::::::::::::::::::::::: 
29.
30.
:weiter 
31.
set "ScrshotName=screenshot" 
32.
set "ScrshotType=jpg" 
33.
del %ScrshotName%*.%ScrshotType% 2>nul 
34.
 
35.
set /a Anzahl=%Dauer%/%Abstand%+%Nummer% 
36.
for /l %%i in (%Nummer%,1,%Anzahl%) do call :Snap %%i 
37.
 
38.
for %%i in ("%ScrshotName%*.%ScrshotType%") do echo put "%%i" >>"%Input%" 
39.
echo bye >>"%Input%" 
40.
ftp -s:"%Input%" 
41.
del "%Input%" 
42.
goto :eof 
43.
 
44.
:Snap 
45.
set Nr=%1 
46.
"data\i_view32.exe" /capture=0 /convert="%ScrshotName%%Nr:~1%.%ScrshotType%" 
47.
if "%1" neq "%Anzahl%" ping -n %Abstand% 127.0.0.1 >nul 
48.
goto :eof
Wobei die Datei dann volgendermasen aufgebaut sein würde:
01.
;Dauer in Sekunden 
02.
Dauer=120 
03.
;Abstand in Sekunden 
04.
Dauer=5 
05.
 
06.
;FTPDaten 
07.
FTP=open ftphost.Berater13.iberio.de 
08.
FTP=Berater13 
09.
FTP=*** 
10.
FTP=Binäry 
11.
FTP=cd html 
12.
FTP=cd Berater13
miniversum

Edit: Fehlerkorrektur beim Einlesen der übergebenen Datei
Bitte warten ..
Mitglied: Soidberg
11.06.2007 um 20:07 Uhr
Ich habe da einen Fehler wenn ich eine ftpinit.txt (später mal config.ini) übergebe.

Hier der Text frisch aus der Box:

01.
C:\Dokumente und Einstellungen\Tester>set /a Nummer=100001 
02.
 
03.
C:\Dokumente und Einstellungen\Tester>set "Input=inputfile.txt" 
04.
 
05.
C:\Dokumente und Einstellungen\Tester>if ["C:\Dokumente und Einstellungen\Tester\Deskt 
06.
op\Screenshooter\Version2\ftpinit.txt"] NEQ [] ( 
07.
copy /y "C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2\ftpin 
08.
it.txt" "inputfile.txt" 1>nul 
09.
 for /F "eol=; delims==" %i in ('find /i "Abstand" ""') do set Abstand=%j 
10.
 for /F "eol=; delims==" %i in ('find /i "Dauer" ""') do set Dauer=%j 
11.
 if exist "inputfile.txt" del "inputfile.txt" 
12.
 for /F "eol=; delims==" %i in ('find /i "FTP" ""') do echo %j 1>>"inputfile.txt 
13.
14.
)  else ( 
15.
set /a Abstand=3 
16.
 set /a Dauer=9 
17.
 
18.
 echo open ftphost..de  1>"inputfile.txt" 
19.
 echo Agent012  1>>"inputfile.txt" 
20.
 echo ***  1>>"inputfile.txt" 
21.
 echo binary   1>>"inputfile.txt" 
22.
 
23.
24.
Datei  nicht gefunden 
25.
Datei  nicht gefunden 
26.
Datei  nicht gefunden 
27.
 
28.
C:\Dokumente und Einstellungen\Tester>set "ScrshotName=screenshot" 
29.
 
30.
C:\Dokumente und Einstellungen\Tester>set "ScrshotType=jpg" 
31.
 
32.
C:\Dokumente und Einstellungen\Tester>del screenshot*.jpg  2>nul 
33.
 
34.
C:\Dokumente und Einstellungen\Tester>set /a Anzahl=/+100001 
35.
Fehlender Operand 
36.
 
37.
C:\Dokumente und Einstellungen\Tester>for /L %i in (100001 1) do call :Snap %i 
38.
 
39.
C:\Dokumente und Einstellungen\Tester>for %i in ("screenshot*.jpg") do echo put "%i 
40.
"  1>>"inputfile.txt" 
41.
 
42.
C:\Dokumente und Einstellungen\Tester>echo bye  1>>"inputfile.txt" 
43.
 
44.
C:\Dokumente und Einstellungen\Tester>ftp -s:"inputfile.txt" 
45.
ftp> bye 
46.
 
47.
C:\Dokumente und Einstellungen\Tester>del "inputfile.txt">pause 
48.
Drücken Sie eine beliebige Taste . . .
Eventuell hilft es Dir bei der Fehlersuche.

Wenn das klappt dann bleibt nur noch der Punkt mit dem direkten Upload nach jedem Bild.

P.S. Eine Signatur im Quellcode ist Euch beiden auf jeden Fall sicher.

Gruß Soidberg
Bitte warten ..
Mitglied: bastla
11.06.2007 um 20:24 Uhr
Hallo Soidberg!

Leider war ich fast den ganzen Tag weg, daher erst jetzt zur Klarstellung:

Sorry, das verstehe ich nicht. Meinst du mein Verhalten?
Nein, überhaupt nicht - war ganz allein meine Nase, an die ich gefasst habe, weil ich (vorher schon funktionierenden) Code gepostet hatte, bei dem es nötig war, ihn zu korrigieren.

Es tut mir leid wenn du meine Korrektur als Angriff gewertest hast.
Habe ich nicht und würde ich nicht.

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
11.06.2007 um 21:22 Uhr
Habs oben mal korrigiert.
Schau mal obs geht.

miniversum
Bitte warten ..
Mitglied: bastla
11.06.2007 um 21:28 Uhr
@miniversum

Hatte es auch gerade so ähnlich hingebogen, bis auf "tokens=1,2" - da das Token 1 ohnehin nicht verwendet wird, könnte man gleich auf
01.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Abstand" "%~1"') do set Abstand=%%i
verkürzen ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
11.06.2007 um 22:12 Uhr
Hallo Soidberg und miniversum!

Ein Versuch mit sofortigem Versand:
01.
@echo off & setlocal 
02.
 
03.
::Dateinamenformat (Anzahl Nullen) 
04.
set /a Nummer=100001 
05.
 
06.
set "Input=inputfile.txt" 
07.
set "ftpInit=ftpinit.txt" 
08.
if exist "%ftpInit%" del "%ftpInit%" 
09.
 
10.
if [%1]==[] goto :Defaults 
11.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Abstand" "%~1"') do set Abstand=%%i 
12.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Dauer" "%~1"') do set Dauer=%%i 
13.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "FTP" "%~1"') do echo %%i>>"%ftpInit%" 
14.
goto :weiter 
15.
 
16.
:Defaults 
17.
::Abstand und Dauer in Sekunden 
18.
set /a Abstand=15 
19.
set /a Dauer=120 
20.
 
21.
::::::::::::::::::::::::::::::::::::::::::::: 
22.
::ftpinit, falls nicht als Argument übergeben 
23.
 
24.
echo open ftphost.Berater13.iberio.de >>"%ftpInit%" 
25.
echo Berater13 >>"%ftpInit%" 
26.
echo *** >>"%ftpInit%" 
27.
echo binary >>"%ftpInit%" 
28.
echo cd html >>"%ftpInit%" 
29.
echo cd Berater13 >>"%ftpInit%" 
30.
 
31.
::ftpinit-Ende 
32.
::::::::::::::::::::::::::::::::::::::::::::: 
33.
 
34.
:weiter 
35.
set "ScrshotName=screenshot" 
36.
set "ScrshotType=jpg" 
37.
del "%ScrshotName%*.%ScrshotType%" 2>nul 
38.
 
39.
set /a Anzahl=%Dauer%/%Abstand%+%Nummer% 
40.
for /l %%i in (%Nummer%,1,%Anzahl%) do call :SnapAndFtp %%i 
41.
goto :eof 
42.
 
43.
:SnapAndFtp 
44.
set Nr=%1 
45.
"data\i_view32.exe" /capture=0 /convert="%ScrshotName%%Nr:~1%.%ScrshotType%" 
46.
type "%ftpInit%">"%Input%" 
47.
echo put "%ScrshotName%%Nr:~1%.%ScrshotType%">>"%Input%" 
48.
echo bye >>"%Input%" 
49.
echo Sende "%ScrshotName%%Nr:~1%.%ScrshotType%" (bis %Anzahl:~1%) ... 
50.
ftp -s:"%Input%" 
51.
if "%1" neq "%Anzahl%" ping -n %Abstand% 127.0.0.1 >nul 
52.
goto :eof
Egal, ob der Aufruf mit Übergabe einer "config.ini" (@miniversum: oben hattest Du zweimal "Dauer") oder ohne erfolgt, es wird auf jeden Fall eine "ftpinit.txt" erstellt, da diese für jeden einzelnen Upload verwendet wird.

Die Umstellung von "if () else ()" auf "goto" ist zwar nicht elegant, aber ich hatte jeweils Fehlermeldungen, wenn keine "config.ini" übergeben wurde (Verdacht: wegen des "find", das zwar nicht ausgeführt, aber dennoch interpretiert wird und dem dabei die zu durchsuchende Datei "%1" fehlt).

Inwieweit die Verzögerung durch den zwischenzeitlichen Upload per Verkürzung der Pause ("ping") zu kompensieren ist, bleibt zu testen ...

Grüße
bastla
Bitte warten ..
Mitglied: Soidberg
11.06.2007 um 22:32 Uhr
Habs oben mal korrigiert.
Schau mal obs geht.

miniversum

Nein, aber der Fehler scheint sich geändert zu haben wenn ich mir mal den Ablauf so anschaue:

01.
 
02.
C:\Dokumente und Einstellungen\Tester>set /a Nummer=100001 
03.
 
04.
C:\Dokumente und Einstellungen\Tester>set "Input=inputfile.txt" 
05.
 
06.
C:\Dokumente und Einstellungen\Tester>if ["C:\Dokumente und Einstellungen\Tester\Deskt 
07.
op\Screenshooter\Version2\inputfile.ini"] NEQ [] ( 
08.
for /F "eol=; tokens=1,2 delims==" %i in ('find /i "Abstand=" "C:\Dokumente und 
09.
Einstellungen\Tester\Desktop\Screenshooter\Version2\inputfile.ini"') do set Abstand 
10.
=%j 
11.
 for /F "eol=; tokens=1,2 delims==" %i in ('find /i "Dauer=" "C:\Dokumente und E 
12.
instellungen\Tester\Desktop\Screenshooter\Version2\inputfile.ini"') do set Dauer=%j 
13.
 
14.
 if exist "inputfile.txt" del "inputfile.txt" 
15.
 for /F "eol=; tokens=1,2 delims==" %i in ('find /i "FTP=" "C:\Dokumente und Ein 
16.
stellungen\Tester\Desktop\Screenshooter\Version2\inputfile.ini"') do echo %j 1>>"in 
17.
putfile.txt" 
18.
)  else ( 
19.
set /a Abstand=2 
20.
 set /a Dauer=6 
21.
 
22.
 echo open ftphost..de  1>"inputfile.txt" 
23.
 echo Agent012  1>>"inputfile.txt" 
24.
 echo ***  1>>"inputfile.txt" 
25.
 echo binary   1>>"inputfile.txt" 
26.
 
27.
28.
 
29.
C:\Dokumente und Einstellungen\Tester>set Abstand= 
30.
 
31.
C:\Dokumente und Einstellungen\Tester>set Dauer= 
32.
 
33.
C:\Dokumente und Einstellungen\Tester>set Dauer=4 
34.
 
35.
C:\Dokumente und Einstellungen\Tester>set Dauer=2 
36.
 
37.
C:\Dokumente und Einstellungen\Tester>echo  1>>"inputfile.txt" 
38.
 
39.
C:\Dokumente und Einstellungen\Tester>echo open ftphostTEST..de 1>>"inputfile. 
40.
txt" 
41.
 
42.
C:\Dokumente und Einstellungen\Tester>echo Agent012 1>>"inputfile.txt" 
43.
 
44.
C:\Dokumente und Einstellungen\Tester>echo *** 1>>"inputfile.txt" 
45.
 
46.
C:\Dokumente und Einstellungen\Tester>echo Binary 1>>"inputfile.txt" 
47.
 
48.
C:\Dokumente und Einstellungen\Tester>echo cd html 1>>"inputfile.txt" 
49.
 
50.
C:\Dokumente und Einstellungen\Tester>echo cd screener 1>>"inputfile.txt" 
51.
 
52.
C:\Dokumente und Einstellungen\Tester>set "ScrshotName=screenshot" 
53.
 
54.
C:\Dokumente und Einstellungen\Tester>set "ScrshotType=jpg" 
55.
 
56.
C:\Dokumente und Einstellungen\Tester>del screenshot*.jpg  2>nul 
57.
 
58.
C:\Dokumente und Einstellungen\Tester>set /a Anzahl=2/+100001 
59.
 
60.
C:\Dokumente und Einstellungen\Tester>for /L %i in (100001 1 0) do call :Snap %i 
61.
 
62.
C:\Dokumente und Einstellungen\Tester>for %i in ("screenshot*.jpg") do echo put "%i 
63.
"  1>>"inputfile.txt" 
64.
 
65.
C:\Dokumente und Einstellungen\Tester>echo bye  1>>"inputfile.txt" 
66.
 
67.
C:\Dokumente und Einstellungen\Tester>ftp -s:"inputfile.txt" 
68.
ftp> ECHO ist eingeschaltet (ON). 
69.
Ungültiger Befehl 
70.
ftp> open ftphostTEST..de 
71.
Verbindung mit ftphostTEST..de wurde hergestellt. 
72.
220 FTP Server ready. 
73.
Benutzer (ftphostTEST..de:(none)): 
74.
331 Password required for Agent012. 
75.
 
76.
230 User Agent012 logged in. 
77.
ftp> Binary 
78.
250 CWD command successful 
79.
ftp> cd html 
80.
250 CWD command successful 
81.
ftp> cd screener 
82.
250 CWD command successful 
83.
ftp> bye 
84.
221 Goodbye. 
85.
 
86.
C:\Dokumente und Einstellungen\Tester>pause 
87.
Drücken Sie eine beliebige Taste . . .
Mit integrierten Daten geht es wieder...

@bastla

Schön das alles in Butter ist. :0) Hätten ja drüber sprechen können.

Back2Topic

Genial zu sehen wie Ihr Euch ergänzt. Bin mal auf deine Variante gespannt.

Gruß Soidberg
Bitte warten ..
Mitglied: bastla
11.06.2007 um 22:41 Uhr
Hallo Soidberg!

... der Fehler scheint sich geändert zu haben ...
Überprüfe die "config.ini" (oder, wie sie bei Dir noch heißt, "inputfile.ini") darauf hin, ob ein Eintrag für "Abstand=" existiert.

Bin mal auf deine Variante gespannt.
Eine aktuellere als die von 22:12:35 Uhr habe ich noch nicht zu bieten ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.06.2007 um 22:56 Uhr
Moin alle,

das macht ja richtig Spass, so vielen Perfektionisten auf einmal zuzuschauen...

Dann würde ich auch gern auch ein (überflüssiges, aber ) ästhetisches i-Tüpfelchen beisteuern.

Irgendwie gänzlich unerotisch sieht dieser Block aus:

01.
... 
02.
::::::::::::::::::::::::::::::::::::::::::::: 
03.
::ftpinit, falls nicht als Argument übergeben 
04.
 
05.
echo open ftphost.Berater13.iberio.de >>"%ftpInit%" 
06.
echo Berater13 >>"%ftpInit%" 
07.
echo *** >>"%ftpInit%" 
08.
echo binary >>"%ftpInit%" 
09.
echo cd html >>"%ftpInit%" 
10.
echo cd Berater13 >>"%ftpInit%" 
11.
 
12.
::ftpinit-Ende 
13.
:::::::::::::::::::::::::::::::::::::::::::::
...den würde ich, wenn es schon professionell aussehen soll, so formuli/formatieren:
01.
... 
02.
::::::::::::::::::::::::::::::::::::::::::::: 
03.
::ftpinit, falls nicht als Argument übergeben 
04.
 
05.
(echo open ftphost.Berater13.iberio.de 
06.
echo Berater13 
07.
echo *** 
08.
echo binary  
09.
echo cd html 
10.
echo cd Berater13 )>>"%ftpInit%" 
11.
::ftpinit-Ende 
12.
:::::::::::::::::::::::::::::::::::::::::::::
... dann ist es richtig wartbar.

Ansonsten: Respekt!

Biber
Bitte warten ..
Mitglied: Soidberg
11.06.2007 um 23:09 Uhr
@bastla

Auch hier haben wir ein Problem:

01.
Microsoft Windows XP [Version 5.1.2600] 
02.
(C) Copyright 1985-2001 Microsoft Corp. 
03.
 
04.
C:\Dokumente und Einstellungen\Tester>cd C:\Dokumente und Einstellungen\Tester\Desktop 
05.
\Screenshooter\Version2 
06.
 
07.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>screen.bat con 
08.
fig.ini 
09.
 
10.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set /a Nummer= 
11.
100001 
12.
 
13.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set "Input=inp 
14.
utfile.txt" 
15.
 
16.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set "ftpInit=f 
17.
tpinit.txt" 
18.
 
19.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>if exist "ftpi 
20.
nit.txt" del "ftpinit.txt" 
21.
 
22.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>if [config.ini 
23.
] == [] goto :Defaults 
24.
 
25.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>for /F "eol=; 
26.
tokens=2 delims==" %i in ('find /i "Abstand" "config.ini"') do set Abstand=%i 
27.
 
28.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>for /F "eol=; 
29.
tokens=2 delims==" %i in ('find /i "Dauer" "config.ini"') do set Dauer=%i 
30.
 
31.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set Dauer=4 
32.
 
33.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set Dauer=2 
34.
 
35.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>for /F "eol=; 
36.
tokens=2 delims==" %i in ('find /i "FTP" "config.ini"') do echo %i 1>>"ftpinit.t 
37.
xt" 
38.
 
39.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>echo open ftphost12.de 1>>"ftpinit.txt" 
40.
 
41.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>echo Agent012 1> 
42.
>"ftpinit.txt" 
43.
 
44.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>echo ****** 
45.
 1>>"ftpinit.txt" 
46.
 
47.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>echo Binary 1> 
48.
>"ftpinit.txt" 
49.
 
50.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>echo cd html 1 
51.
>>"ftpinit.txt" 
52.
 
53.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>echo cd screen 
54.
er 1>>"ftpinit.txt" 
55.
 
56.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>goto :weiter 
57.
 
58.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set "ScrshotNa 
59.
me=screenshot" 
60.
 
61.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set "ScrshotTy 
62.
pe=jpg" 
63.
 
64.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>del "screensho 
65.
t*.jpg"  2>nul 
66.
 
67.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set /a Anzahl= 
68.
2/+100001 
69.
 
70.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>for /L %i in ( 
71.
100001 1 0) do call :SnapAndFtp %i 
72.
 
73.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>goto :eof 
74.
 
75.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>
Die .bat fängt bei einer Übergabe nicht an Bilder zu machen, es endet wie oben zu sehen.

@Biber

Hast recht aber das wäre bestimmt noch geändert worden (ist mir auch aufgefallen und hätte es später selber korrigiert), Maniküre kommt zuletzt, wenn die Routine an sich steht. Außerdem wollte ich meine Helfer nicht "unnötig" korrigieren.

Zitat=Mein Lehrmeister
Um eine Schraube nachzuziehen bestellt man ja auch keine Handwerkercrew.
Zitat Ende

Dennoch, Danke für den schriftlichen Hinweis. Bist halt auch ein Perfektionist. :0)

Gruß Soidberg
Bitte warten ..
Mitglied: bastla
11.06.2007, aktualisiert 18.10.2012
@Biber

Ich hatte sogar schon daran gedacht, Deine an alte QBasic-"Data"-Statements errinnernde Mimik (wie etwa hier gezeigt) zu imitieren, aber diese Version ist entschieden schöner ...

... und müsste sogar so funktionieren:
01.
::::::::::::::::::::::::::::::::::::::::::::: 
02.
::ftpinit, falls nicht als Argument übergeben 
03.
04.
 
05.
echo open ftphost.Berater13.iberio.de 
06.
echo Berater13 
07.
echo *** 
08.
echo binary  
09.
echo cd html 
10.
echo cd Berater13 
11.
 
12.
)>"%ftpInit%" 
13.
::ftpinit-Ende 
14.
:::::::::::::::::::::::::::::::::::::::::::::
Grüße
bastla
Bitte warten ..
Mitglied: bastla
11.06.2007 um 23:14 Uhr
Hallo Soidberg!

Und Du bist ganz sicher, dass es in Deiner "config.ini" eine Zeile
01.
Abstand=2
und nicht 2 Zeilen mit "Dauer=" gibt?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.06.2007 um 23:50 Uhr
...für bastlas scheinheilige Frage würde sprechen:
01.
 C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set Dauer=4 
02.
C:\Dokumente und Einstellungen\Tester\Desktop\Screenshooter\Version2>set Dauer=2 
03.
...
... das würde ich ja nicht als Maniküre bezeichnen... *<ganzbreitgrinz>*

Schönen Abend noch
Biber
Bitte warten ..
Mitglied: miniversum
12.06.2007 um 08:44 Uhr
@bastla
Ich glaube die 1Sekunde Pause ist so schwer genau festzulegen. Durch zugrifsZeiten auf den FTP die ja auch schwanken können und da es ja ein PC mit Windows ist udn kein Echtzeitbetriebssystem würd ich diese zeitliche anforderung nicht ganz so hoch stecken. Aber das kann man ja am Ende noch anpassen und vielelcith aus dem Ping dann doch ein Sleep oder einfach nur eine For Schleife machen. Da wäre da sowieso die Frage zu klären was passiert wenn Abstand > Dauer ist. Oder was wenn Dauer=0 oder Dauer=1 sein soll.

Also ichhabs grade nochmal durchgetestet und ich bekomme Beim Schreiben der Werte aus dem config.ini (oder wie auch immer die Datei mit den Einstellungen heißt) die Meldung "Zugriff verweigert". Ohne Datei als Parameter, also wenn die Defaultwerte geschrieben werden, gehts.
Ist das bei euch auch so?

mini
Bitte warten ..
Mitglied: Soidberg
12.06.2007 um 13:07 Uhr
Recht habt Ihr, habe es geändert.

Muss aber dennoch nochmal testen.

@bastla

Ich werde berichten...

EDIT

Also bei mir funktionert der Code. Ich habe allerdings mal angefangen das ganze etwas umzustellen.

Ordneraufbau: Stammordner--->Dataordner

Ich habe mir eine Start.bat gezimmert die jetzt im Stammordner liegt. Hier der simple Code:

01.
Echo off 
02.
 
03.
cd data 
04.
 
05.
if exist screen2ftp.ini goto :CONFIGSTART 
06.
screen2ftp.bat 
07.
goto :eof 
08.
:CONFIGSTART 
09.
screen2ftp.bat screen2ftp.ini 
10.
:eof
unsere screen2ftp.bat liegt jetzt im Dataordner. Hier der genutzte Code:

01.
@echo off & setlocal 
02.
 
03.
::Dateinamenformat (Anzahl Nullen) 
04.
set /a Nummer=100001 
05.
 
06.
set "Input=inputfile.txt" 
07.
set "ftpInit=ftpinit.txt" 
08.
if exist "%ftpInit%" del "%ftpInit%" 
09.
 
10.
if [%1]==[] goto :Defaults 
11.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Abstand" "%~1"') do set Abstand=%%i 
12.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Dauer" "%~1"') do set Dauer=%%i 
13.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "FTP" "%~1"') do echo %%i>>"%ftpInit%" 
14.
goto :weiter 
15.
 
16.
:Defaults 
17.
::Abstand und Dauer in Sekunden 
18.
set /a Abstand=2 
19.
set /a Dauer=6 
20.
 
21.
::::::::::::::::::::::::::::::::::::::::::::: 
22.
::ftpinit, falls nicht als Argument übergeben 
23.
24.
echo open ftphost.iberia.de 
25.
echo Kundenbetreuung 
26.
echo ****** 
27.
echo binary  
28.
echo cd html 
29.
echo cd KDbetreuung 
30.
 
31.
)>"%ftpInit%" 
32.
::ftpinit-Ende 
33.
::::::::::::::::::::::::::::::::::::::::::::: 
34.
 
35.
:weiter 
36.
set "ScrshotName=screenshot" 
37.
set "ScrshotType=png" 
38.
del "%ScrshotName%*.%ScrshotType%" 2>nul 
39.
 
40.
set /a Anzahl=%Dauer%/%Abstand%+%Nummer% 
41.
for /l %%i in (%Nummer%,1,%Anzahl%) do call :SnapAndFtp %%i 
42.
<b>del "%Input%"</b> 
43.
<b>del "%ftpInit%"</b> 
44.
goto :eof 
45.
 
46.
:SnapAndFtp 
47.
set Nr=%1 
48.
"i_view32.exe" /capture=0 /convert="%ScrshotName%%Nr:~1%.%ScrshotType%" 
49.
type "%ftpInit%">"%Input%" 
50.
echo put "%ScrshotName%%Nr:~1%.%ScrshotType%">>"%Input%" 
51.
echo bye >>"%Input%" 
52.
echo Sende "%ScrshotName%%Nr:~1%.%ScrshotType%" (bis %Anzahl:~1%) ... 
53.
ftp -s:"%Input%" 
54.
<b>del "%ScrshotName%*.%ScrshotType%" 2>nul</b> 
55.
if "%1" neq "%Anzahl%" ping -n %Abstand% 127.0.0.1 >nul 
56.
goto :eof
Desweiteren habe ich eine del-Zeile mehr gesetzt um die Bilder direkt nach dem Upload wieder löschen zu lassen.

Die screen2ftp.ini sieht (immernoch) so aus:

01.
;Dauer in Sekunden 
02.
Dauer=4 
03.
;Abstand in Sekunden 
04.
Abstand=2 
05.
 
06.
;FTPDaten 
07.
FTP=open ftphost.iberia.de 
08.
FTP=Berater13 
09.
FTP=***** 
10.
FTP=Binary 
11.
FTP=cd html 
12.
FTP=**cd Berater13**
Ablauf

Die Berater kopieren (falls überhaupt nötig) Ihre Screen2ftp.ini in das "Data" Verzeichnis, packen das ganze und versenden es an den Kunden.

Dieser startet die Start.bat und es wird die screen2ftp.ini übergeben. Wenn keine screen2ftp.ini vorhanden ist werden natürlich die intergrierten Daten verwendet.

Letzte Wünsche

Die Dateien:

- inputfile.txt
- ftpinit.txt

von der Platte putzen wen alles erledigt ist. Sprich, wenn alles hochgeladen wurde und die Dateien nicht mehr gebraucht werden sollen sie gelöscht werden.

P.S Die Dateinamen (ini, bat etc) haben jetzt Finalstatus *lach*, wir nähern uns dem Ende. :0) Wenn ich ehrlich bin hat es richtig Spaß gemacht mit Euch dran zu feilen, vielen lieben Dank dafür.

Liebe Grüße

Soidberg

EDIT2: Korrektur siehe bastla´s Post. und miniversum´s "del" Vorschlag
Bitte warten ..
Mitglied: bastla
12.06.2007 um 18:43 Uhr
Hallo Soidberg!

Das Löschen der beiden ".txt"-Dateien kann unmittelbar nach der "for /l"-Schleife erfolgen.
Maniküre :
01.
cd "%CD%\data"
gefällt mir noch immer nicht besser als
01.
cd data
Noch eine Anmerkung: Wenn Du beim Posten in einem Codeblock die Formatierung "fett" verwenden willst, musst Du die Tags <b > und </b > (natürlich ohne Leerstellen) setzen.

Grüße
bastla
Bitte warten ..
Mitglied: Soidberg
12.06.2007, aktualisiert 18.10.2012
Hallo Soidberg!

Das Löschen der beiden
".txt"-Dateien kann unmittelbar
nach der "for /l"-Schleife
erfolgen.
Maniküre :
01.
cd "%CD%\data" 
02.
> 
gefällt mir noch immer
nicht besser als
01.
cd data 
02.
> 
Noch eine Anmerkung: Wenn Du beim Posten in
einem Codeblock die Formatierung
"fett" verwenden willst, musst Du
die Tags <b > und </b >
(natürlich ohne Leerstellen) setzen.

Grüße
bastla

Wieso eigentlich, wo ist den der Unterschied? Ich bastle sehr gerne Portables und da arbeite ich sehr oft mit %CD%. Habe ich mir wohl einfach angewöhnt.

Danke für den Tipp, würde umgesetzt :0)

@TOPIC

Fertig, es ist ein nützliches kleines Tool entstanden. Das ganze wird noch heute Abend compiliert und morgen in einem ersten großen Betatest durch mehrere Mitarbeiter getestet.

Der Code ist für Schnippselsammler in meinen Beitrag zu finden:

http://www.administrator.de/forum/screenshot-erstellen-%28mit-zusatztoo ...

@Mitbastler (miniversum, Biber, Bastla)

Ich möchte an dieser Stelle mich für die erneute Zusammenarbeit rechtherzlich bei Euch bedanken. Es macht sehr viel Spaß hier in diesem Forum, mit solchen Membern, Mods und Admin eine Zusammenarbeit pflegen zu dürfen.

*Wenn ich mir unser Projekt jetzt mal so anschaue und vom eigentlichen Zweck absehe komme ich auf die Idee das ganze beim Herr Schäuble als Entwurf einzusenden. *fg*
Schliesslich bewegt sich dieser Funktionsablauf in einer Grauzone. ;) (um es mal so zu beschreiben)

Gruß Soidberg
Bitte warten ..
Mitglied: Biber
12.06.2007 um 19:21 Uhr
Na, dann mach ich auch noch mal Maniküre...

Diese Sequenz ist IMHO nicht sonderlich robust:
01.
.... 
02.
if [%1]==[] goto :Defaults 
03.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Abstand" "%~1"') do set Abstand=%%i 
04.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Dauer" "%~1"') do set Dauer=%%i 
05.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "FTP" "%~1"') do echo %%i>>"%ftpInit%" 
06.
goto :weiter 
07.
 
08.
:Defaults 
09.
::Abstand und Dauer in Sekunden 
10.
set /a Abstand=2 
11.
set /a Dauer=6 
12.
:: << SetFTPDefaults>> 
13.
:weiter
...denn es wird unterstellt, wenn ein Parameter "Dateiname" übergeben wird,
dann enthält diese Datei auch "Dauer" und "Abstand" und...
Wenn z.B. nur "Dauer", aber nicht "Abstand" in der Ini-Datei gefunden wird durch die FOR/F-Anweisung,
dann grätscht der Schnipsel unsanft und unnötig ab.

Ich würde es umdrehen: erst die Defaults auf jeden Fall setzen und ggf. überschreiben:
01.
 
02.
:Defaults 
03.
::Abstand und Dauer in Sekunden 
04.
set /a Abstand=2 
05.
set /a Dauer=6 
06.
if [%1]==[] goto :ftpinit 
07.
:: hier kommt der Batch nur hin, wenn ein Parameter mitgegeben wurde... 
08.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Abstand" "%~1"') do set Abstand=%%i 
09.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Dauer" "%~1"') do set Dauer=%%i 
10.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "FTP" "%~1"') do echo %%i>>"%ftpInit%" 
11.
REM ---- hier ENTFÄLLT goto :weiter 
12.
:ftpinit        ------> dieses zur Sprungmarke machen! 
13.
:: << SetFTPDefaults>> 
14.
 
15.
if [%1]==[] ( 
16.
.... [die hübschen echo-Befehle, die jetzt schon in Klammern sind...] 
17.
.... 
18.
 
19.
)>"%ftpInit%" 
20.
::ftpinit-Ende 
21.
 
22.
REM hier ENTFÄLLT (Sprungmarke) :weiter 
23.
....
Grüße
Biber

[Edit] Uups, da war ich wohl ein bisschen spät... na ja... nimm es mit für die Version 1.01a..
Solche Beiträge machen mit gemeinschaftlich erarbeitetem Ergebnis machen auch mir Spaß - sowohl beim Nur-Lesen wie auch beim Mit-Diskutieren.
[/Edit]
Bitte warten ..
Mitglied: miniversum
12.06.2007 um 21:18 Uhr
Ich hab auch noch ne Anmerkung die dem Biber wol entgangen ist :D
Das
del inputfile.txt
del ftpinit.txt
... am Ende ist nicht so toll. Denn wenn du die Dateinamen aus irgenteinem Grund Später mal ändern Solltest must du es an Zwei stellen ändern. Oben sind Diese Namen ja schon Variabeln zugeordnet. Da sollte man die dann auch benutzen. Also so:
del "%Input%"
del "%ftpInit%"

miniversum
Bitte warten ..
Mitglied: Biber
12.06.2007 um 22:06 Uhr
@Soidberg, bastla, miniversum (an Euch als die Bis-zur-Final-Treiber )

Dann schlage ich @Soidberg vor:
  • ziehe zumindest miniversums Anmerkung noch nach in dem Referenzschnipsel oben
  • trage noch oben in den Batch zwei saloppe Kommentarzeilen...
  • und eine Zeile mit der Versionsnummer ein ("0.98 RC" oder so *gg).

Ich denke, dann kannst Du diesen Beitrag auch gelassen auf "gelöst" setzen.
Entgegen meinen sonstigen Gewohnheiten kann ich es mir auch verkneifen, den Beitrag zu schließen...
..ich könnte mir vorstellen, dass noch weiter gefeilt und hochglanzpoliert werden wird..

.... aber dennoch: es ist nur ein Batch...

Grüße
Biber
Bitte warten ..
Mitglied: Soidberg
13.06.2007 um 00:50 Uhr
@bastla

Also ich habe es jetzt mal so eingebaut:

01.
@echo on & setlocal 
02.
 
03.
:Defaults 
04.
::Abstand und Dauer in Sekunden 
05.
set /a Abstand=2 
06.
set /a Dauer=6 
07.
if [%1]==[] goto :ftpinit 
08.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Abstand" "%~1"') do set Abstand=%%i 
09.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Dauer" "%~1"') do set Dauer=%%i 
10.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "FTP" "%~1"') do echo %%i>>"%ftpInit%" 
11.
 
12.
:ftpinit     
13.
if [%1]==[] 
14.
15.
echo open ftphost.iberia.de 
16.
echo Berater13 
17.
echo ***** 
18.
echo binary  
19.
echo cd html 
20.
echo cd KDbetreuung 
21.
 
22.
)>"%ftpinit%" 
23.
::ftpinit-Ende 
24.
 
25.
set "ScrshotName=screenshot" 
26.
set "ScrshotType=png" 
27.
del "%ScrshotName%*.%ScrshotType%" 2>nul 
28.
 
29.
set /a Anzahl=%Dauer%/%Abstand%+%Nummer% 
30.
for /l %%i in (%Nummer%,1,%Anzahl%) do call :SnapAndFtp %%i 
31.
del "%Input%" 
32.
del "%ftpInit%" 
33.
pause 
34.
goto :eof 
35.
 
36.
:SnapAndFtp 
37.
set Nr=%1 
38.
"i_view32.exe" /capture=0 /convert="%ScrshotName%%Nr:~1%.%ScrshotType%" 
39.
type "%ftpInit%">"%Input%" 
40.
echo put "%ScrshotName%%Nr:~1%.%ScrshotType%">>"%Input%" 
41.
echo bye >>"%Input%" 
42.
echo Sende "%ScrshotName%%Nr:~1%.%ScrshotType%" (bis %Anzahl:~1%) ... 
43.
ftp -s:"%Input%" 
44.
del "%ScrshotName%*.%ScrshotType%" 2>nul 
45.
if "%1" neq "%Anzahl%" ping -n %Abstand% 127.0.0.1 >nul 
46.
pause 
47.
goto :eof 
48.
 
Allerdings habe ich wohl einen Fehler gemacht und finde Ihn nicht. Ich hatte mal um zu sehen was passiert vor jedes goto :eof eine pause gesetzt aber ich bekomme immer noch nix angezeigt. Die Shell schließt einfach.

@miniversum

Absolut Logisch und wird sofort übernommen. :0)

@Biber

Miniversum´s Korrektur hänge ich sofort an und wenn Bastla´s Vorschlag auch soweit funktioniert kommt er auch hinzu. Dieser Beitrag hier kann dann sogar gelöscht werden (um die Übersicht zu behalten) da (sollte der Fehler in Bastlascode sein) er Ihn ja auch oben editiert.

Du kannst dann aber gerne den Thread erstmal schließen. Wenn etwas ist weiß ich wie ich Dich erreiche ;0)

Gruß Soidberg
Bitte warten ..
Mitglied: bastla
13.06.2007 um 11:12 Uhr
Hallo Soidberg!

Nachdem diverse von Dir doch eher lieblos entfernte Zeilen (Maniküre mit Seitenschneider? ) nun doch wieder enthalten sind, sollte der Code in dieser Fassung eigentlich funktionieren:
01.
@echo off & setlocal 
02.
 
03.
set "Input=inputfile.txt" 
04.
set "ftpInit=ftpinit.txt" 
05.
if exist "%ftpInit%" del "%ftpInit%" 
06.
 
07.
:Defaults 
08.
::Abstand und Dauer in Sekunden 
09.
set /a Abstand=2 
10.
set /a Dauer=6 
11.
if [%1]==[] goto :ftpinit 
12.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Abstand" "%~1"') do set Abstand=%%i 
13.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "Dauer" "%~1"') do set Dauer=%%i 
14.
for /f "eol=; tokens=2 delims==" %%i in ('find /i "FTP" "%~1"') do echo %%i>>"%ftpInit%" 
15.
 
16.
:ftpinit 
17.
if [%1]==[] ( 
18.
 
19.
echo open ftphost.iberia.de 
20.
echo Berater13 
21.
echo ***** 
22.
echo binary 
23.
echo cd html 
24.
echo cd KDbetreuung 
25.
 
26.
)>"%ftpinit%" 
27.
 
28.
::Screenshot-Dateinamen 
29.
::Anzahl Nullen 
30.
set /a Nummer=100001 
31.
 
32.
set "ScrshotName=screenshot" 
33.
set "ScrshotType=png" 
34.
del "%ScrshotName%*.%ScrshotType%" 2>nul 
35.
 
36.
set /a Anzahl=%Dauer%/%Abstand%+%Nummer% 
37.
for /l %%i in (%Nummer%,1,%Anzahl%) do call :SnapAndFtp %%i 
38.
del "%Input%" 
39.
del "%ftpInit%" 
40.
goto :eof 
41.
 
42.
:SnapAndFtp 
43.
set Nr=%1 
44.
"i_view32.exe" /capture=0 /convert="%ScrshotName%%Nr:~1%.%ScrshotType%" 
45.
type "%ftpInit%">"%Input%" 
46.
echo put "%ScrshotName%%Nr:~1%.%ScrshotType%">>"%Input%" 
47.
echo bye >>"%Input%" 
48.
echo Sende "%ScrshotName%%Nr:~1%.%ScrshotType%" (bis %Anzahl:~1%) ... 
49.
ftp -s:"%Input%" 
50.
del "%ScrshotName%*.%ScrshotType%" 2>nul 
51.
if "%1" neq "%Anzahl%" ping -n %Abstand% 127.0.0.1 >nul 
52.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Soidberg
13.06.2007 um 18:47 Uhr
Jepp, so ist es. War wohl doch zu unausgeschlafen, das hat man nun davon :0)

Liebe Grüße & dickes Danke für die Unterstützung

</Brainstorming>

Soidberg
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Netzwerkgrundlagen
IPsec - .conf und .secret erstellen aus Gruppe und User (16)

Frage von MaxMLe zum Thema Netzwerkgrundlagen ...

Windows Tools
Automatischer FTP-Upload ohne angemeldeten Benutzer (5)

Frage von SarekHL zum Thema Windows Tools ...

RedHat, CentOS, Fedora
gelöst Erstellen von Desktopverknüpfungen und Anpassung der Taskleiste (2)

Frage von honeybee zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...