noobstar0815
Goto Top

Problem bei Umsetzung meines Vorhabens

Guten morgen =)
Wie einige schon wissen habe ich eine Datei zum herunterladen von Java etc. erstellt. Die Dateien werden heruntergeladen wenn sie ein gewisses Alter überschreiten. Nun möchte ich diesen Download erst per Abfrage bestätigen. Leider weiß ich nicht wie ich dieses umsetzen kann.

cls
@echo off
rem lw vorab auf default K: setzen
set lw=K:
echo Der aktuell ausgewaehlte Laufwerksbuchstabe ist "%lw%". Falls Sie ihn aendern     moechten geben Sie bitte einen neuen Laufwerksbuchstaben an.  
set /p lw="Bitte freien Laufwerksbuchstaben angeben (G:...[K:]...Z:) "  
net use %lw% \\WWW-HGR\BDR\BDR-Benutzer\Ausbildung\automatischeUpdateswoechentlich

set /A counter=0

for /f "tokens=1-5 delims=. " %%i in ("%date%") do set "dayc=%%j" & set "monthc=%%k" & set "yearc=%%l"  

:loop

set /A counter=%counter%+1

if %counter%==1 set ordner=Adobe Flash Player Active X& set ProgName=Adobe Flash Player Active X
if %counter%==2 set ordner=Adobe Flash Player Plug-In& set ProgName=Adobe Flash Player Plug-In
if %counter%==3 set ordner=Adobe Reader& set ProgName=Adobe Reader
if %counter%==4 set ordner=Adobe Shockwave& set ProgName=Adobe Shockwave
if %counter%==5 set ordner=Firefox& set ProgName=Firefox
if %counter%==6 set ordner=Java& set ProgName=Java
if %counter%==7 set ordner=Microsoft Defender& set ProgName=Microsoft Defender
if %counter%==8 goto END

for /f "delims=" %%i in ('dir /a-d /tw "%lw%\%ordner%" ^| findstr /b [0-9]') do (  
	for /f "tokens=1-6*delims=.: " %%a in ("%%i") do (  
		set "dayf=%%a"  
		set "monthf=%%b"  
		set "yearf=%%c"  
	)
)

if %dayf%==08 set "Svar=08" & set /a dayf=1%Svar%-100  
if %dayf%==09 set "Svar=09" & set /a dayf=1%Svar%-100  
if %monthf%==08 set /a set "Svar=09" & set /a monthf=1%Svar%-100  
if %monthf%==09 set /a set "Svar=09" & set /a monthf=1%Svar%-100  
if %dayc%==08 set "Svar=08" & set /a dayc=1%Svar%-100  
if %dayc%==09 set "Svar=09" & set /a dayc=1%Svar%-100  
if %monthc%==08 set /a set "Svar=09" & set /a monthc=1%Svar%-100  
if %monthc%==09 set /a set "Svar=09" & set /a monthc=1%Svar%-100  

set /a yearf=%yearf%
set /a yearc=%yearc%

set dDiv1=0
set dDiv2=0
set mDiv1=0
set mDiv2=0
set yDiv1=0
set yDiv2=0

if %dayf% GTR %dayc% (
	set /a dDiv1=%dayf%-%dayc%
	) else (
	set /a dDiv2=%dayc%-%dayf%
	)

if NOT %dDiv1%==0 set /a dDiv=%dDiv1%
if NOT %dDiv2%==0 set /a dDiv=%dDiv2%

if %monthf% GTR %monthc% (
	set /a mDiv1=%monthf%-%monthc%
	) else (
	set /a mDiv2=%monthc%-%monthf%
	)

if %yearf% LSS %yearc% set /a %yDiv1%=%yearf%-%yearc%

if %mDiv1%==0 (
	set /a mDivd=0
	) else (
	set /a mDivd=%mDiv1%*30
	)

if %mDiv2%==0 (
	set /a mDivd=0
	) else (
	set /a mDivd=%mDiv2%*30
	)

if %yDiv1%==0 (
	set /a yDivd=0
	) else (
	set /a yDivd=%yDiv1%*365
	)

if %yDiv2%==0 (
	set /a yDivd=0
	) else (
	set /a yDivd=%yDiv2%*365
	)

if /i %yearf% LSS %yearc% (
	if /i %monthf% LSS %monthc% (
		if /i %dayf% LSS %dayc% (
			set /a age=365+%mDivd%+%dDiv%
			) else (
			set /a age=365+%dDiv%-%mDivd%
			)
		) else (
	set /a age=365-(%dDiv%+%mDivd%)
	)
	) else (
		if /i %monthf% LSS %monthc% (
			if /i %dayf% LSS %dayc% (
				set /a age=%mDivd%+%dDiv%
				) else (
				set /a age=%mDivd%-%dDiv%
			)
			) else (
			set /a age=%mDivd%+%dDiv%
			)
		)
		
echo Das Programm %ProgName% ist vom %dayf%.%monthf%.%yearf% und ist somit %age% Tage alt.
Hier soll die Abfrage hin
if "%age%"=="" set age=error  

if %counter%==1 goto FlashPlayerAcitveX
if %counter%==2 goto FlashPlayerPlug-In
if %counter%==3 goto AdobeReader
if %counter%==4 goto Shockwave
if %counter%==5 goto Firefox
if %counter%==6 goto Java
if %counter%==7 goto MSDefender



goto LOOP

:FlashPlayerAcitveX
if %age%==error DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_11_active_x.msi  
if %age% GTR 15 DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_11_active_x.msi  

goto loop

:FlashPlayerPlug-In
if %age%==error DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_11_plugin.msi  
if %age% GTR 15 DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_11_plugin.msi  

goto loop

:AdobeReader
if %age%==error DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping ftp://ftp.adobe.com/pub/adobe/reader/win/11.x/11.0.03/de_DE/AdbeRdr11003_de_DE.exe  
if %age% GTR 15 DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping ftp://ftp.adobe.com/pub/adobe/reader/win/11.x/11.0.03/de_DE/AdbeRdr11003_de_DE.exe  

goto loop

:Shockwave
if %age%==error DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://www.adobe.com/go/sw_msi_installer  
if %age% GTR 15 DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://www.adobe.com/go/sw_msi_installer  

goto loop

:Firefox
if %age%==error DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://hicap.frontmotion.com/Firefox/Firefox-21.0/Firefox-21.0-de.msi  
if %age% GTR 15 DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://hicap.frontmotion.com/Firefox/Firefox-21.0/Firefox-21.0-de.msi  

goto loop
	
:Java
if %age%==error DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://javadl.sun.com/webapps/download/AutoDL?BundleId=76860  
if %age% GTR 15 DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://javadl.sun.com/webapps/download/AutoDL?BundleId=76860  

goto loop

:MSDefender
if %age%==error DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://download.microsoft.com/download/b/2/3/b2353327-ad30-4800-a256-51d6ec99baec/windowsdefender.msi  
if %age% GTR 15 DEL /Q "%lw%\%ordner%\*.*" & wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://download.microsoft.com/download/b/2/3/b2353327-ad30-4800-a256-51d6ec99baec/windowsdefender.msi  

goto loop


:END
net use %lw% /d
pause

Mfg Noobstar0815

Content-ID: 207196

Url: https://administrator.de/forum/problem-bei-umsetzung-meines-vorhabens-207196.html

Ausgedruckt am: 28.12.2024 um 15:12 Uhr

colinardo
colinardo 29.05.2013 aktualisiert um 10:32:48 Uhr
Goto Top
mit so einer Konstruktion solltest du klarkommen ...
set /p dl=Download starten ?(j/n)
if /i "%dl%" == "j" (goto :STARTDOWNLOAD) else (goto :NODOWNLOAD)  

Grüße Uwe
Noobstar0815
Noobstar0815 29.05.2013 um 11:15:58 Uhr
Goto Top
Hallo Uwe, normal fragt wget auch nach ob es heruntergeladen werden soll. Ich möchte es aber gerne so haben: Erst von allen Dateien das Alter ermitteln und ausgeben, dann eine Frage "Soll das Programm XYZ heruntergeladen werden?" oder bei mehreren "Sollen die Programme XYZ YXZ ZXY heruntergeladen werden?" und erst bei Bestätigung dann nur die genannten Programme... Da weiß ich nicht wie ich das umsetzen kann
Endoro
Endoro 29.05.2013 um 11:29:46 Uhr
Goto Top
Hallo Noobstar,

du hattest doch hier schon mal das Alter berechnet, wo ist jetzt das Problem?

Gruss!
Noobstar0815
Noobstar0815 29.05.2013 um 11:37:47 Uhr
Goto Top
Hallo Endoro,
das Alter bestimmen ist dieses Mal nicht das Problem =) Sondern eher die richtige Verwertung :D
Meine Batch arbeitet im Moment so: Counter+1 -> bestimme Alter des ersten Programm -> Ausgabe: Programmname und Alter -> Älter als 15 Tage = neu runterladen -> Counter+1 -> nächste Programm

Haben möchte ich es aber so:
Counter+1 -> bestimme Alter aller Programme -> Ausgabe der Alter+Namen -> Abfrage ob alte Daten neu heruntergeladen werden sollen

Leider weiß ich nicht wie ich das genau anstellen soll :/

MfG Noobstar0815
Noobstar0815
Noobstar0815 29.05.2013 um 11:41:34 Uhr
Goto Top
Also mir ist schon klar, dass das Alter der Programme nicht auf einmal stattfindet sondern nacheinander, das widerrum heißt ich müsste mir jedes mal eine neue Variable setzen für den Namen und so weiter.
colinardo
colinardo 29.05.2013 aktualisiert um 12:18:30 Uhr
Goto Top
Dann mach halt folgendes:
Springe aus dem loop nicht jeweils zum Download des jeweiligen Programms sondern sammle die jeweiligen Programme in einer Variablen und mache dann die jeweiligen Downloads in einer Schleife am Schluss:

ganz oben im Script noch folgendes einfügen (ACHTUNG WICHTIG: nach der Zeile set NL=^ müssen zwei Leerzeilen stehen, Zur Info: dies erzeugt einen Zeilenumbruch):
@echo off & setlocal ENABLEDELAYEDEXPANSION
set URLsToDownload=
set NL=^
dann in deinem Script ab Zeile 116 alles rausnehmen und hierdurch ersetzen:

if "%age%" gtr "15" (set URLsToDownload=!URLsToDownload!!NL!!counter!)  
if "!counter!" == "7" (goto STARTDOWNLOAD) else (goto loop)  

:STARTDOWNLOAD
set /p startDL=Soll der Download der veralteten Programme gestartet werden ?(j/n)
if /i "%startDL%" == "n" goto END  
for /f "tokens=*" %%k in ("!URLsToDownload!") DO @(  
	if %%k == 1 (
                set ordner=Adobe Flash Player Active X
		wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_11_active_x.msi   
	)
	if %%k == 2 (
                set ordner=Adobe Flash Player Plug-In
		wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_11_plugin.msi   
	)
	if %%k == 3 (
                set ordner=Adobe Reader
		wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping ftp://ftp.adobe.com/pub/adobe/reader/win/11.x/11.0.03/de_DE/AdbeRdr11003_de_DE.exe   
	)
	if %%k == 4 (
                set ordner=Adobe Shockwave
		wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://www.adobe.com/go/sw_msi_installer  
	)
	if %%k == 5 (
                set ordner=Firefox
		wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://hicap.frontmotion.com/Firefox/Firefox-21.0/Firefox-21.0-de.msi  
	)
	if %%k == 6 (
                set ordner=Java
		wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://javadl.sun.com/webapps/download/AutoDL?BundleId=76860   
	)
	if %%k == 7 (
                set ordner=Microsoft Defender
		wget --quiet --continue --directory-prefix="%lw%\%ordner%" --timestamping http://download.microsoft.com/download/b/2/3/b2353327-ad30-4800-a256-51d6ec99baec/windowsdefender.msi  
	)

)
:END
net use %lw% /d
pause

Denke das sollte den Denkanstoss geben ...

Grüße Uwe
Noobstar0815
Noobstar0815 29.05.2013 um 12:30:28 Uhr
Goto Top
Vielen Dank Uwe =)
Leider habe ich ein Problem bei deinem Code.
Ich verstehe den ersten Block nicht, und im 2. Block verstehe ich die Zeilen 1,2 und 7 nicht. Bei 7 verstehe ich nicht ganz wofür das %%k da ist, aus dem Kontext nehme ich, dass er der Counter ist, allerdings weiß ich nciht wo ich das genau nach schauen kann, welche Variable bei der for-Schleife wofür da ist, mit for help versteh ichs nicht. Bei den Zeilen 1 und 2 habe ich ein Problem mit den !! da ich nicht weiß wofür diese da sind.
Könntest du mir dies bitte noch erklären? =)
MfG Noobstar0815
colinardo
colinardo 29.05.2013 aktualisiert um 12:41:31 Uhr
Goto Top
also zuerst die ! sind für Verzögerte Auflösung siehe dazu bitte bei Google nach, das hab ich hier schon X mal erklärt.
Im ersten Block werden die Variablen auf 0 gesetzt und das NL erzeugt einen Zeilenumbruch, den wir später brauchen.
In URLsToDownload wird in jedem Durchgang deines Loops die Zahl des Counters mit einem zusätzlichen Zeilenumbruch hinzugefügt, aber nur wenn das Programm schon älter ist. Diesen String druchlaufen wir am Schluss mit einer FOR-Schleife; dabei steht %%k jeweils für den Download des jeweiligen Programs das heruntergeladen werden muss(in der Reihenfolge die du oben in deiner Schleife festlegst)
hoffe das war einigermaßen klar...
Noobstar0815
Noobstar0815 29.05.2013 um 12:52:54 Uhr
Goto Top
Danke schön =)