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

Variablen abfragen, deren Name sich teils aus anderen Variablen ergibt

Frage Entwicklung Batch & Shell

Mitglied: dievonnebenan

dievonnebenan (Level 1) - Jetzt verbinden

29.01.2009, aktualisiert 16:15 Uhr, 5071 Aufrufe, 6 Kommentare

In einer Batchdatei habe ich 3 Variablen mit den schönen Namen bildordner_1_1, bildordner_1_2 und bildordner_1_3 die jeweils eine Pfadangabe enthalten. Die erste und zweite Zahl ist im nachfolgenden Script jeweils eine weitere Variable, die im Verlauf der Ausführung heraufgezählt wird...

In einer Batchdatei habe ich 3 Variablen mit den schönen Namen bildordner_1_1, bildordner_1_2 und bildordner_1_3 die jeweils eine Pfadangabe enthalten. Die erste und zweite Zahl ist im nachfolgenden Script jeweils eine weitere Variable, die im Verlauf der Ausführung heraufgezählt wird...

im Folgescript prüfe ich nun ab, ob die variablen überhaupt existieren und kann dadurch feststellen, ob das script die schleife verlassen soll, oder nicht:
01.
if not defined bildordner_%a%_%b% (goto :eof)
funktioniert ganz prima, existenz wird bestätigt und das script läuft in die verarbeitungsphase

im nächsten Schritt soll allerdings die Existenz des Ordners in der Variable bestätigt werden, also:
01.
if not exist "bildordner_%a%_%b%\" (mkdir "bildordner_%a%_%b%\")
das problem: anders als "if defined" geht "if exist" - und jeder andere befehl auf komandozeile - nicht davon aus, dass der ihm übergebene string eine variable ist. Ergebnis ist, das die Variablen %a% und %b% aufgelöst werden und das script nicht nach dem ordner sucht, den die variable enthält, sondern nach einem ordner mit dem namen "bildordner_1_1"

sieht irgendjemand eine lösung für mein dilemma? (ich würde nur ungern auf eine lösung mit schleifen verzichten, da sich der scriptumfang dank vieler benötigter bilderordner auf gut das 100fache des aktuellen umfangs erhöhen würde ;)

Danke schonmal für eure Hilfe



informationshalber hier noch das ganze script:
01.
::############################################################################################################ 
02.
::############################################# GLOBALE VARIABLEN ############################################ 
03.
::############################################################################################################ 
04.
::set prompt=$H 
05.
::@echo off 
06.
cls 
07.
 
08.
:allg_variablen 
09.
set nconvert=C:\Programme\XnView\nconvert.exe 
10.
if not exist "%nconvert%" ((set istfehler=1) & (echo fehler: nconvert nicht unter %nconvert% vorhanden) & (goto :eof)) 
11.
 
12.
goto :ablauf 
13.
 
14.
 
15.
 
16.
::############################################################################################################ 
17.
::########################################### ALLGEMEINE FUNKTIONEN ########################################## 
18.
::############################################################################################################ 
19.
 
20.
::--------------------------------- Definition von Pfad- und Groessenangaben --------------------------------- 
21.
:allg_01 
22.
 
23.
set tempordner=temp 
24.
set orininordner=origin 
25.
 
26.
set pfad_1=C:\bilder\convert\ms 
27.
(set bildordner_1_1=107x80)  & (set breite_1_1=107) 
28.
(set bildordner_1_2=200x149) & (set breite_1_2=200) 
29.
(set bildordner_1_3=600x449) & (set breite_1_3=600) 
30.
 
31.
goto :eof 
32.
 
33.
::---- Pruefung auf Vorhandensein der Variablen und umlenken des Scripts auf die einzelnen Arbeitsschritte --- 
34.
:allg_02 
35.
if not defined a (set a=1) else ((set /A a=" a+1") & (set b=)) 
36.
if not defined pfad_1 ((set istfehler=1) & (goto :eof)) 
37.
if not defined pfad_%a% ((set fertig=1) & (call :umwandlung_03) & (goto :eof)) 
38.
if not defined b call :umwandlung_01 
39.
call :umwandlung_02 
40.
goto :allg_02 
41.
 
42.
::---------------------- Pruefung auf Vorhandensein der Bilder und Verarbeitungsordner ----------------------- 
43.
:umwandlung_01 
44.
chdir /d "pfad_%a%" 
45.
if not exist *.jpg (set fehler=1) & (goto :eof) 
46.
if not exist "%tempordner%\" mkdir "%tempordner%" 
47.
move *.jpg "%tempordner%\" >nul 
48.
goto :eof 
49.
 
50.
::------------------------------- Umwandlung der Bilder in die neuen Groessen -------------------------------- 
51.
:umwandlung_02 
52.
if not defined b (set b=1) else (set /A b=" b+1") 
53.
if not defined bildordner_%a%_1 ((set istfehler=1) & (goto :eof)) 
54.
if not defined bildordner_%a%_%b% (goto :eof) 
55.
 
56.
if not exist "bildordner_%a%_%b%\" (mkdir "bildordner_%a%_%b%\") 
57.
cd "%tempordner%"\ 
58.
%nconvert% -ratio -rtype lanczos -rflag orient -resize breite_%a%_%b% 0 -out jpeg -o "..\bildordner_%a%_%b%\%%.jpg" *.jpg 
59.
cd.. 
60.
goto :umwandlung_02 
61.
 
62.
::---------------------------------------- Aufraeumen der Temp-Ordner ---------------------------------------- 
63.
:umwandlung_03 
64.
if not exist "%orininordner%" mkdir "%orininordner%" 
65.
move "%tempordner%\*.jpg" "%orininordner%\" >nul 
66.
move "%orininordner%\*.jpg" >nul ::spart waehrend der verprobung das laestige zurückkopieren 
67.
rmdir "%tempordner%" 
68.
goto :eof 
69.
 
70.
 
71.
::############################################################################################################ 
72.
::################################################## SCRIPTE ################################################# 
73.
::############################################################################################################ 
74.
 
75.
:ablauf 
76.
echo script: bilderumwandlung und upload 
77.
call :allg_01 
78.
call :allg_02
Mitglied: bastla
29.01.2009 um 18:31 Uhr
Hallo webactivity.de!

Sollte sich etwa so lösen lassen:
01.
call set "BO=%%bildordner_%a%_%b%%%" 
02.
if not exist "%BO%" md "%BO%"
Grüße
bastla
Bitte warten ..
Mitglied: dievonnebenan
30.01.2009 um 09:49 Uhr
ist ja der hammer... das geht tatsächlich *freu*

vielen, vielen dank bastla für dieses kleine wunder...

aber nun noch die frage zur syntax.
warum den set-befehl mit call aufrufen und wozu um die eigentliche variable links und rechts je 2 Prozentzeichen?
Bitte warten ..
Mitglied: bastla
30.01.2009 um 12:10 Uhr
Hallo web-activity.de!
warum den set-befehl mit call aufrufen
Damit erhältst Du eine neue CMD-Instanz, in der der "set"-Befehl mit bereits aufgelösten Variablen (= für %a% und %b% werden die entsprechenden Werte eingesetzt) durchgeführt werden kann.
wozu um die eigentliche variable links und rechts je 2 Prozentzeichen?
Um ein einzelnes Prozentzeichen in Batch zu erzeugen, musst Du deren 2 angeben (kennst Du vermutlich schon von der "for"-Schleife, für die in einem Batch ja auch %%i anstelle von %i zu schreiben ist)

Grüße
bastla

P.S.:
vielen, vielen dank bastla für dieses kleine wunder...
Für Deinen Dank bin ich der falsche Adressat - ist bei Biber geklaut ...
Bitte warten ..
Mitglied: dievonnebenan
30.01.2009 um 12:37 Uhr
Bei der Frage mit den 2 Prozentzeichen hab ich wohl einfach nicht genug nachgedacht - das gleiche Prinzip verwendet nconvert bei der Angabe für Dateinamen nur ein paar Zeilen unter meiner Prüf-Routine *gg*

Was die Sache mit dem call set angeht - einfach genial, wie wir Thüringer sagen...

Für Deinen Dank bin ich der falsche Adressat - ist bei Biber geklaut ...
sagen wir mal: du hast es gefunden (ist mir ja anscheinend nicht gelungen)

Vielleicht könnte man aus der zugrunde liegenden Problematik ja ein kleines Tutorial schreiben?! ;)
Bitte warten ..
Mitglied: bastla
30.01.2009 um 18:10 Uhr
Hallo web-activity.de!
Vielleicht könnte man aus der zugrunde liegenden Problematik ja ein kleines Tutorial schreiben?! ;)
Ersetze "man" durch "web-activity.de" und Du erntest meine vollste Zustimmung ...

Grüße
bastla
Bitte warten ..
Mitglied: dievonnebenan
02.02.2009 um 12:30 Uhr
@bastla Die Chance stand 50:50... *gg*

Werde also am Wochenende etwas dazu schreiben - naja... ich versuche es zumindest

Grüsse
Chris
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Wie Device name in Variable einfügen
gelöst Frage von it-fisiBatch & Shell6 Kommentare

Hallo, ich möchte per Batch file mit ADB auf mein Android Handy zugreifen. Zur Prüfung ob die Verbindung besteht ...

Batch & Shell
Datei mit Variablem namen in Variablem Verzeichnis umbenennen
Frage von PinkFLuffyUnicornBatch & Shell6 Kommentare

Moin Leute,i bims mal wieder. ich versuche nun seit ner gefühlten Ewigkeit, folgendes Script zum laufen zu bringen. es ...

Batch & Shell
Ordner mit variablen Namen (Abfrage) per PowerShell Script erstellen.
gelöst Frage von ExcellsiorBatch & Shell5 Kommentare

Hallo Community, ich hoffe eine von euch hat eine passende Idee: Und zwar möchte ich gerne für PowerShell eine ...

Batch & Shell
Variablen außerhalb einer For Schleife abfragen
gelöst Frage von Michael-24Batch & Shell3 Kommentare

Hallo miteinander, ich habe ein Problem, bei dem ich überhaupt nicht weiter komme. Ich möche ein kleine Batchdatei erstellen, ...

Neue Wissensbeiträge
Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 2 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 2 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 14 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 21 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...