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

Mitglied: dievonnebenan

dievonnebenan (Level 1) - Jetzt verbinden

29.01.2009, aktualisiert 16:15 Uhr, 5080 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 ...

Microsoft Office

Accsess SQL Abfrage als Variable in einer anderen Abfrage übergeben

Frage von Luna01Microsoft Office1 Kommentar

Guten Morgen, zu meinem Problem: ich habe mehrere (Haupt-) Abfragen, die ich über ein Kombinationsfeld KombiHauptabfrage aufrufe. qyrHaupt1, qyrHaupt2, ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Debian
Wie finde ich den betroffenen user
Frage von ProtectedDebian8 Kommentare

Hallo, Wie kann ich den User finden der dies verursacht hat? Betriebsystem ist Debian 7 your Server/Customer with the ...

Voice over IP
Vodafone IP Anlagenanschluss - TK-Anlage einrichten
Frage von BytedreherVoice over IP8 Kommentare

Moin Zusammen, wir hatten gestern bei uns die Umstellung auf den neuen IP Anschluss bei Vodafone. Vodafone IP Anlagenanschluss ...