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

Mehrere Bedingungen mit If Abfragen und in eine Variable schreiben

Frage Entwicklung Batch & Shell

Mitglied: cced-de

cced-de (Level 1) - Jetzt verbinden

23.06.2011 um 22:02 Uhr, 3518 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Mehrere Ordnernamen auslesen und in eine Variable schreiben (5)

Frage von schmitho zum Thema Batch & Shell ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Aktueller Besitzer der aktuellen Datei herausfinden und in Variable schreiben (11)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
gelöst DWORD (Name immer verschieden) eines RegKeys auslesen und in Variable schreiben (2)

Frage von reissaus73 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...