Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Variable wird nicht gesetzt.

Frage Entwicklung Batch & Shell

Mitglied: EinsteinXXL

EinsteinXXL (Level 1) - Jetzt verbinden

28.10.2009 um 14:06 Uhr, 3570 Aufrufe, 5 Kommentare

Ich möchte prüfen, ob einer Varibale schon einen Wert zugewiesen wurde und wenn nicht, diesen setzten.

Ich habe Folgendes Problem. Aus einer INI-Datei lese ich einen Pfad aus und schreibe ihn in die Variable %INSTALLDIR%. Wenn Dann in der INI-Datei kein Pfad angegeben ist, möchte ich einen Standardwert setzen.

01.
// - INI-Datei auslesen 
02.
for /f "tokens=2 delims==" %%i in ('findstr /I "INSTALLDIR" settings.ini')  do set INSTALLDIR=%%i 
03.
 
04.
// - Variable zuweisen wenn nicht vohanden und Ausgabe des Ergebnis 
05.
if x%INSTALLDIR%x == xx ( 
06.
    set INSTALLDIR="c:\Programme\myprog" <----- hier wird die variable irgendwie nicht gesetzt.  
07.
    echo Keine Konfiguration gefunden. Standard wird verwendet.  
08.
    echo INSTALLDIR: %INSTALLDIR%  
09.
    echo.        
10.
) else ( 
11.
    echo Konfiguration gefunden und wird verwendet. 
12.
    echo INSTALLDIR: %INSTALLDIR%  
13.
    echo.  
14.
)
Hat jemand ne Ahnung was ich falsch machen?
Mitglied: Iwan
28.10.2009 um 14:41 Uhr
hallo,

was machen die ganze x in Zeile 5 denn?
änder die mal ab auf:
if %INSTALLDIR% == "" (
Bitte warten ..
Mitglied: Biber
28.10.2009 um 15:00 Uhr
Moin EinsteinXXL,

willkommen im Forum.

Dein Problem hängt an der optischen Täuschung, dass die eine Befehlszeile "IF () ..ELSE ()..)" rein optisch wie mehrere Zeilen wirkt.

In Wirklichkeit wird die Variable "%INSTALLDIR%" nur ein einziges Mal aufgelöst (das SET in Zeile 6 wird erst ab Zeile 15 wirksam).

Ändere es so:
01.
// - INI-Datei auslesen 
02.
for /f "tokens=2 delims==" %%i in ('findstr /I "INSTALLDIR" settings.ini')  do set INSTALLDIR=%%i 
03.
 
04.
// - Variable zuweisen wenn nicht vohanden und Ausgabe des Ergebnis 
05.
if x%INSTALLDIR%x == xx ( 
06.
    set INSTALLDIR="c:\Programme\myprog" <----- hier wird die variable irgendwie nicht gesetzt.  
07.
    echo Keine Konfiguration gefunden. Standard wird verwendet.   
08.
) else ( 
09.
    echo Konfiguration gefunden und wird verwendet. 
10.
11.
   echo INSTALLDIR: %INSTALLDIR%  
12.
   echo.       
...und/oder lies dich ein ins Thema "DelayedExpansion" = verzögerte Variablenauflösung.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
28.10.2009 um 15:27 Uhr
Hallo EinsteinXXL und willkommen im Forum!

Nur kurz zum Thema "Ich möchte prüfen, ob einer Varibale schon ein Wert zugewiesen wurde":
if not defined INSTALLDIR set INSTALLDIR="c:\Programme\myprog"
Grüße
bastla
Bitte warten ..
Mitglied: bastla
28.10.2009 um 15:32 Uhr
@Iwan
Eigentlich ist es egal, wie geprüft wird, ob %INSTALLDIR% genau Garnix enthält - wenn das der Fall ist, wird eben aus "x%INSTALLDIR%x" das abgefragte "xx" (allerdings gäbe es genau für diesen Zweck eine Abfrage per "if defined") ...

Grüße
bastla
Bitte warten ..
Mitglied: EinsteinXXL
19.11.2009 um 12:58 Uhr
Danke für eure Antworten. Hab das Problem jetzt mit "if not defined" gelöst.

mfg EinsteinXXL
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Mit zusammengesetzter Variable auf andere Variable zugreifen (2)

Frage von abiber zum Thema Batch & Shell ...

Batch & Shell
gelöst Teil eines Strings als Variable setzen (2)

Frage von tHe-jAy zum Thema Batch & Shell ...

VB for Applications
Auswahlliste mit variablen (3)

Frage von 94451 zum Thema VB for Applications ...

Sicherheit
Millionen Euro in den Sand gesetzt? (3)

Information von transocean zum Thema Sicherheit ...

Neue Wissensbeiträge
Mac OS X

Apple hat macOS High Sierra veröffentlicht

Information von Frank zum Thema Mac OS X ...

Viren und Trojaner

Ransomware or Wiper? RedBoot Encrypts Files but also Modifies Partition Table

(4)

Information von BassFishFox zum Thema Viren und Trojaner ...

Notebook & Zubehör

WOL bei HP Notebooks

(7)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

Heiß diskutierte Inhalte
Windows 10
gelöst Netzwerkkarte schaltet sich erst nach dem Logon ein (24)

Frage von DerWoWusste zum Thema Windows 10 ...

Windows Server
Seit IP Umstellung DC DNS Fehler (19)

Frage von Yaimael zum Thema Windows Server ...

Weiterbildung
gelöst Fest angestellter Admin oder Systemhaus Admin mit Kundenbetreuung? (15)

Frage von Voiper zum Thema Weiterbildung ...