Top-Themen

Aktuelle Themen (A bis Z)

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 Mehrere Bedingungen mit If Abfragen und in eine Variable schreiben

Mitglied: cced-de

cced-de (Level 1) - Jetzt verbinden

23.06.2011 um 22:02 Uhr, 3555 Aufrufe, 4 Kommentare

Hallo zusammen... ich mal wieder...
Ich möchte folgendes erreichen...
innerhalb eines bestehenden Scripts soll aus einer Config.ini ein bevorzugter Packer ausgelesen werden.
Außerdem wird aus der gleichen Config.ini ein Wert ausgelesen, ob die zu packende Datei gesplittet werden soll.
Mein Problem ist nun folgendes:
Es sollen 2 Bedingungen Erfüllt sein, um einen Wert in eine Variable zu schreiben.
z.B.
1. Wenn Packer 7Zip (in Variable %Packer%) ausgewählt ist, und der Wert "Ja" für Splitten der Datei gewählt ist, soll die Variable %PackParam% den Wert "a -v4g -p%ArcPW% -tzip -mx0 -r" enthalten.
2. Wenn Packer 7Zip (in Variable %Packer%) ausgewählt ist, und der Wert "Nein" für Splitten der Datei gewählt ist, soll die Variable %PackParam% den Wert "a -p%ArcPW% -tzip -mx0 -r" enthalten.
allerdings hat der AW die Wahl zwischen 3 Packern: 7Zip, Rar und WinZip. d.h. der ganze Spass muß 3 x abgefragt werden, je nach dem, welcher Packer gewählt ist.
Außerdem wird dann auch noch getestet, wie groß die Datenmenge ist, die gepackt werden soll. (Ist die Datenmenge Größer als 4 GB, Splitte das Archiv, sonst nicht)
Und Davon abhängig soll die jeweils richtige Befehlszeile ausgeführt werden.

Hier mein Ansatz dazu....

01.
:: Variablen setzen 
02.
:: Diese Wird aus der Config.Ini abgefragt 
03.
::  
04.
: Packer wählen 
05.
Set "IPacker =7Zip" 
06.
:Splitten bei mehr als 4 GB Daten 
07.
Set "Pvol=Ja" 
08.
 
09.
if %IPacker% EQU 7Zip goto Config7Zip 
10.
if %IPacker% EQU rar goto ConfigRar 
11.
if %IPacker% EQU WinZip goto ConfigWinZip 
12.
 
13.
 
14.
:Config7Zip 
15.
:: Hier wird der oben ausgewählte Packer auf der Platte gesucht. 
16.
:: Und der Pfad samt EXE in die Variable %Packer% geschrieben 
17.
Echo suche 7Zip - Bitte etwas Gedult... 
18.
 
19.
SET "SPack=7z.exe" 
20.
IF not defined Packer FOR /F "delims=" %%i in ('dir /b /s "%ProgramFiles%\%SPack%" ^2^>Nul') do Set "Packer=%%~dpi7z.exe" 
21.
If not defined Packer ( 
22.
   IF not defined Packer FOR /F "delims=" %%i in ('dir /b /s "%ProgramFiles(x86)%\%SPack%" ^2^>Nul') do Set "Packer=%%~dpi7z.exe" 
23.
) ELSE ( 
24.
echo 4GBSplit: %Pvol% 
25.
    if %Pvol% EQU Nein set "PackParam=a -p%ArcPW% -tzip -mx0 -r" 
26.
    if %Pvol% EQU Ja set "PackParam=a -v4g -p%ArcPW% -tzip -mx0 -r" 
27.
echo %PackParam% 
28.
Pause 
29.
Goto :PackFile 
30.
31.
 
32.
:ConfigRar 
33.
:: Hier wird der oben ausgewählte Packer auf der Platte gesucht. 
34.
:: Und der Pfad samt EXE in die Variable %Packer% geschrieben 
35.
Echo suche RAR - Bitte etwas Gedult... 
36.
 
37.
SET "SPack=rar.exe" 
38.
IF not defined Packer FOR /F "delims=" %%i in ('dir /b /s "%ProgramFiles%\%SPack%" ^2^>Nul') do Set "Packer=%%~dpirar.exe" 
39.
If not defined Packer ( 
40.
   IF not defined Packer FOR /F "delims=" %%i in ('dir /b /s "%ProgramFiles(x86)%\%SPack%" ^2^>Nul') do Set "Packer=%%~dpirar.exe" 
41.
) ELSE ( 
42.
  echo RAR gefunden in "%Packer%" 
43.
  if %Pvol% EQU Nein set "PackParam=a -p%ArcPW% -tzip -mx0 -r" 
44.
  if %Pvol% EQU ja set "PackParam=a -v4g -p%ArcPW% -tzip -mx0 -r" 
45.
Goto :PackFile 
46.
47.
 
48.
 
49.
:ConfigWinZip 
50.
:: Hier wird der oben ausgewählte Packer auf der Platte gesucht. 
51.
:: Und der Pfad samt EXE in die Variable %Packer% geschrieben 
52.
Echo suche WinZip32 - Bitte etwas Gedult... 
53.
 
54.
SET "SPack=winzip32.exe" 
55.
IF not defined Packer FOR /F "delims=" %%i in ('dir /b /s "%ProgramFiles(x86)%\%SPack%" ^2^>Nul') do Set "Packer=%%~dpiwinzip32.exe" 
56.
If not defined Packer ( 
57.
echo suche in 32Bit 
58.
   IF not defined Packer FOR /F "delims=" %%i in ('dir /b /s "%ProgramFiles(x86)%\%SPack%" ^2^>Nul') do Set "Packer=%%~dpiwinzip32.exe" 
59.
) ELSE ( 
60.
  echo WinZip gefunden in "%Packer%" 
61.
   Goto :PackFile 
62.
63.
 
64.
:PackFile 
65.
 set "Drive=%Startdir:~,2%" 
66.
 %Drive% 
67.
 cd %StartDIR% 
68.
 set Ordner=%~1 
69.
 cd "%Ordner%" 
70.
	 
71.
	if exist *.!UT (  
72.
  	 cd %startdir%   	 
73.
 	 goto :eof) 
74.
 	 
75.
:: Hier wird die zu Packende Datenmenge berechnet 
76.
 	Set PackFile="%startdir%%ordner%" 
77.
	for /f "tokens=3" %%i in ('dir "%PackFile%" /s /-c^|findstr /c:" Datei(en)"^|findstr /e /c:" Bytes"') do set "DirSize=%%i" 
78.
	if %DirSize% gtr 999999 (set "over=%DirSize:~0,-6%" && set "under=%DirSize:~6%") else goto :PackeNormal 
79.
	if %over% equ 4294 if 1%under% gtr 1967296 goto :Packe4GB 
80.
	if %over% gtr 4294 goto :Packe4GB 
81.
        goto :PackeNormal 
82.
         
83.
	:Packe4GB 
84.
:: Ab hier soll gepackt werden. Bei einer Datenmenge von mehr als 4 GB 
85.
	echo Packe groesser als 4 GB 
86.
	"%Packer%" %PackParam% %Ordner%.zip 
87.
	echo 1>%Startdir%%Ordner%\!Erledigt.DoNot.!UT 
88.
	goto PackEnd 
89.
	 
90.
	:PackeNormal 
91.
:: Ab hier soll gepackt werden. Bei einer Datenmenge von weniger als 4 GB 
92.
	echo Packe kleiner oder gleich 4 GB 
93.
	"%Packer%" %PackParam% %Ordner%.zip 
94.
	echo 1>%Startdir%%Ordner%\!Erledigt.DoNot.!UT 
95.
	echo ! - %Date% - %Time%: %Ordner%.zip erstellt.>>%SLOG% 
96.
	goto PackEnd 
97.
	 
98.
	:PackEnd
Was ich also nicht hin bekomme ist folgende Auswertung:
Wenn Packer (%IPacker%)= 7Zip und Splitten (%Pvol%) = Ja - Goto :Packe4GB
Wenn aber Packer = 7Zip und Splitten gleich Nein Goto PackeNormal
Oder ist doch einer der anderen Packer ausgewählt? Dann Nutze anderen Packer und andere Parameter und Triff die richtige Wahl 4GB oder weniger...

Bin euch Dankbar für eure Vorschläge....
Ist doch sicher mal wieder eine nette Herausforderung. Oder sehe ich nur den Wald vor lauter Bäumen nicht?

Gruß CCED (Markus)
Mitglied: Skyemugen
23.06.2011 um 22:19 Uhr
Aloha,

*gähn* ich geh schlafen aber bring dir noch eine Kettensäge vorbei und 'nen Hinweis à la
if "%IPacker%"=="7zip" (if "%Pvol%"=="Ja" goto :Packe4GB) else (if "%IPacker%"=="7zip" (if "%Pvol%"=="Nein" goto :PackeNormal))
usw. das kannst du ja noch ein bisschen erweitern und rumgähnentesten,

ich geh schlafen

gute Nacht
Bitte warten ..
Mitglied: bastla
23.06.2011 um 22:21 Uhr
Hallo cced-de!

Ich habe das ganze mal etwas begradigt (aber nicht getestet):
01.
:: Variablen setzen 
02.
:: Diese Wird aus der Config.Ini abgefragt 
03.
::  
04.
:: Packer wählen 
05.
set "IPacker=7Zip" 
06.
:: Splitten bei mehr als 4 GB Daten 
07.
set "Pvol=Ja" 
08.
:: Variable Packer löschen 
09.
set "Packer=" 
10.
 
11.
if /i "%IPacker%"=="7Zip" goto :Config7Zip 
12.
if /i "%IPacker%"=="rar" goto :ConfigRar 
13.
if /i "%IPacker%"=="WinZip" goto :ConfigWinZip 
14.
echo "%IPacker%" nicht zuordenbar! 
15.
goto :eof 
16.
 
17.
:Config7Zip 
18.
:: Hier wird der oben ausgewählte Packer auf der Platte gesucht. 
19.
:: Und der Pfad samt EXE in die Variable %Packer% geschrieben 
20.
echo suche 7Zip - Bitte etwas Geduld... 
21.
 
22.
set "SPack=7z.exe" 
23.
if not defined Packer for /f "delims=" %%i in ('dir /b /s "%ProgramFiles%\%SPack%" 2^>nul') do set "Packer=%%~i" 
24.
if not defined Packer for /f "delims=" %%i in ('dir /b /s "%ProgramFiles(x86)%\%SPack%" 2^>nul') do set "Packer=%%~i" 
25.
if not defined Packer ( 
26.
    echo "%SPack%" nicht gefunden! 
27.
    goto :eof 
28.
29.
echo 4GBSplit: %Pvol% 
30.
set "PackParam=a -p%ArcPW% -tzip -mx0 -r" 
31.
if /i "%Pvol%"=="Ja" set "PackParam=a -v4g -p%ArcPW% -tzip -mx0 -r" 
32.
echo %PackParam% 
33.
pause 
34.
goto :PackFile 
35.
 
36.
 
37.
:ConfigRar 
38.
:: Hier wird der oben ausgewählte Packer auf der Platte gesucht. 
39.
:: Und der Pfad samt EXE in die Variable %Packer% geschrieben 
40.
echo suche RAR - Bitte etwas Geduld... 
41.
 
42.
set "SPack=rar.exe" 
43.
if not defined Packer for /f "delims=" %%i in ('dir /b /s "%ProgramFiles%\%SPack%" 2^>nul') do set "Packer=%%~i" 
44.
if not defined Packer for /f "delims=" %%i in ('dir /b /s "%ProgramFiles(x86)%\%SPack%" 2^>nul') do set "Packer=%%~i" 
45.
if not defined Packer ( 
46.
    echo "%SPack%" nicht gefunden! 
47.
    goto :eof 
48.
49.
echo RAR gefunden in "%Packer%" 
50.
set "PackParam=a -p%ArcPW% -tzip -mx0 -r" 
51.
if /i "%Pvol%"=="ja" set "PackParam=a -v4g -p%ArcPW% -tzip -mx0 -r" 
52.
goto :PackFile 
53.
 
54.
 
55.
:ConfigWinZip 
56.
:: Hier wird der oben ausgewählte Packer auf der Platte gesucht. 
57.
:: Und der Pfad samt EXE in die Variable %Packer% geschrieben 
58.
echo suche WinZip32 - Bitte etwas Geduld... 
59.
 
60.
set "SPack=winzip32.exe" 
61.
if not defined Packer for /f "delims=" %%i in ('dir /b /s "%ProgramFiles%\%SPack%" 2^>nul') do set "Packer=%%~i" 
62.
if not defined Packer for /f "delims=" %%i in ('dir /b /s "%ProgramFiles(x86)%\%SPack%" 2^>nul') do set "Packer=%%~i" 
63.
if not defined Packer ( 
64.
    echo "%SPack%" nicht gefunden! 
65.
    goto :eof 
66.
67.
echo WinZip gefunden in "%Packer%" 
68.
goto :PackFile 
69.
 
70.
 
71.
:PackFile 
72.
cd /d "%Startdir%" 
73.
set "Ordner=%~1" 
74.
cd "%Ordner%" 
75.
	 
76.
if exist *.!UT (  
77.
    cd "%startdir%" 
78.
    goto :eof 
79.
80.
 	 
81.
:: Hier wird die zu packende Datenmenge berechnet 
82.
set "PackFile=%Startdir%%Ordner%" 
83.
for /f "tokens=3" %%i in ('dir "%PackFile%" /s /-c^|findstr /c:" Datei(en)"^|findstr /e /c:" Bytes"') do set "DirSize=%%i" 
84.
if %DirSize% gtr 999999 (set "over=%DirSize:~0,-6%" && set "under=%DirSize:~6%") else goto :PackeNormal 
85.
if %over% equ 4294 if 1%under% gtr 1967296 goto :Packe4GB 
86.
if %over% gtr 4294 goto :Packe4GB 
87.
goto :PackeNormal 
88.
         
89.
:Packe4GB 
90.
:: Ab hier soll gepackt werden. Bei einer Datenmenge von mehr als 4 GB 
91.
echo Packe groesser als 4 GB 
92.
"%Packer%" %PackParam% "%Ordner%.zip" 
93.
>"%Startdir%%Ordner%\!Erledigt.DoNot.!UT" echo 1 
94.
goto :PackEnd 
95.
	 
96.
:PackeNormal 
97.
:: Ab hier soll gepackt werden. Bei einer Datenmenge von weniger als 4 GB 
98.
echo Packe kleiner oder gleich 4 GB 
99.
"%Packer%" %PackParam% "%Ordner%.zip" 
100.
>"%Startdir%%Ordner%\!Erledigt.DoNot.!UT" echo 1 
101.
>>%SLOG% echo ! - %Date% - %Time%: %Ordner%.zip erstellt. 
102.
goto :PackEnd 
103.
	 
104.
:PackEnd
Grüße
bastla
Bitte warten ..
Mitglied: cced-de
24.06.2011 um 00:00 Uhr
Danke für eure Antworten...
bastla, du bist natürlich mal wieder der Knaller ! Danke,

allerdings wird bei deiner Lösung das Berechnen der Größe der zu Packenden Daten nicht berücksichtigt.

Da muß ich mir noch was zu einfallen lassen. Aber trotzdem schon mal danke!!!!!

CCED (Markus)
Bitte warten ..
Mitglied: bastla
24.06.2011 um 01:33 Uhr
Hallo cced-de!
allerdings wird bei deiner Lösung das Berechnen der Größe der zu Packenden Daten nicht berücksichtigt.
Naja, eigentlich ist es Deine Lösung mit leichten Anpassungen ...

... da ich mir das aber inzwischen näher angesehen habe, kann ich Dir auch den nötigen Anhaltspunkt liefern: Sowohl in ":Packe4GB" als auch in ":PackeNormal" werden die gleichen vorweg festgelegten Parameter (%PackParam%) verwendet.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
PHP

Wert in Variable schreiben, abfragen, ausgeben

Frage von wescraven07PHP4 Kommentare

Moin Developer, ich hab gerade ein Problem, mit einem Wert, der aus Magento kommt, den ich in eine Variabel ...

Batch & Shell

Mehrere Ordnernamen auslesen und in eine Variable schreiben

gelöst Frage von schmithoBatch & Shell5 Kommentare

Hallo zusammen, ich versuche verzweifelt eine Lösung eines Problems zu finden, wie ich den Namen mehrere Ordner in eine ...

Microsoft Office

Aus SQL Abfrage Ergebnis in Variable per loop schreiben

gelöst Frage von karlchristianMicrosoft Office4 Kommentare

Hallo, ich habe eine Temp_Abfrage, welche ich per Schleife nach und nach in eine Variable schreiben möchte begonnen habe ...

Batch & Shell

For-Schleife Bedingung "nicht erfüllt" abfragen

Frage von BatchNeulingBatch & Shell8 Kommentare

Hallo zusammen, dieses Forum hat mir schon des öteren weiter geholfen. Leider finde ich auch nach intensiver Suche noch ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 3 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 8 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 22 StundenSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server38 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless21 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...