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

Variable erweitern

Frage Entwicklung Batch & Shell

Mitglied: zensbert

zensbert (Level 1) - Jetzt verbinden

03.05.2014, aktualisiert 14:31 Uhr, 1373 Aufrufe, 6 Kommentare, 1 Danke

Hi,
Ich würde gerne eine variable erweitern, z.b. so:

if %a_inst% == 1 set variable=A
if %b_inst% == 1 set variable=B
if %C_inst% == 0 set variable=C

dann muss am Ende Variable = "A B" sein

if %a_inst% == 1 set variable=A
if %b_inst% == 0 set variable=B
if %C_inst% == 1 set variable=C

dann muss am Ende Variable = "A C" sein

Kann mir da jemand helfen, muss ich set mit einem Parameter starten?

Danke!
Mitglied: rubberman
03.05.2014 um 14:02 Uhr
Hallo zensbert.

Ich nehme an du willst immer mit 1 vergleichen.
Teste:
01.
@echo off &setlocal 
02.
set /a "a_inst=1, b_inst=1, c_inst=0" 
03.
set "variable=" 
04.
 
05.
setlocal EnableDelayedExpansion 
06.
for %%i in (A B C) do if !%%i_inst! == 1 set "variable=!variable!%%i " 
07.
endlocal &set "variable=%variable:~,-1%" 
08.
 
09.
echo %variable% 
10.
pause
Grüße
rubberman
Bitte warten ..
Mitglied: zensbert
03.05.2014 um 14:12 Uhr
Hi,
Das funktioniert für dein Beispiel super, aber wenn ich 40 Variablen abprüfen muss wird das so sehr problematisch, oder? die variablen haben immer den wert 0 oder 1, richtig. die variablen haben eine andere Präfix als a,b,c dass hatte ich nur der einfachheit halber so gepostet damit man es leichter nachvollziehen kann.. die variablen lauten in echt so:
cado_inst
cfox_inst
coop_inst
..
.

da es ca. 40 sind kann ich die ja aufgrund der beschränkten bucchstabenanzahl nicht auf a,b,c,d,e.. ändern.

Danke vorab!
Bitte warten ..
Mitglied: rubberman
LÖSUNG 03.05.2014, aktualisiert um 14:31 Uhr
Hallo zensbert.

In diesem Fall solltest du die Logik deiner Variablennamen umkehren. Also statt cado_inst, inst_cado verwenden. Dann kannst du mit einer FOR /F Schleife über die Kommandozeile
set inst_
laufen und die Ausgabe verarbeiten.
01.
@echo off &setlocal 
02.
set /a "inst_cado=1, inst_cfox=1, inst_coop=0" 
03.
set "variable=" 
04.
 
05.
setlocal EnableDelayedExpansion 
06.
for /f "tokens=1* delims==" %%i in ('set inst_') do ( 
07.
  if %%j==1 for /f "tokens=1* delims=_" %%k in ("%%i") do set "variable=!variable!%%l " 
08.
09.
endlocal &set "variable=%variable:~,-1%" 
10.
 
11.
echo %variable% 
12.
pause
Grüße
rubberman
Bitte warten ..
Mitglied: zensbert
03.05.2014 um 14:31 Uhr
danke, du hast mir sehr geholfen!

Grüße!
Bitte warten ..
Mitglied: pieh-ejdsch
03.05.2014, aktualisiert um 15:31 Uhr
moin rubberman,

wenn nur nach den 1er werten gesucht werden soll kann die Set-ausgabe abgesucht werden ohne Umstellen der Variablen.
01.
for /f "delims=_" %%i in ('set ^|findstr /ie "_inst=1" ') do set "variable=!Variable!%%i "
Gruß Phil
Bitte warten ..
Mitglied: rubberman
03.05.2014, aktualisiert um 15:39 Uhr
Hallo Phil.

Yepp, wie immer: Viele Wege führen nach Rom

Grüße
rubberman
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell - Werte in Variable durch Schleife erweitern bzw. ändern (5)

Frage von ralfkausk zum Thema Batch & Shell ...

Batch & Shell
Laufwerksbezeichnung (label) in Batch als Variable nutzen (3)

Frage von tobias.mock zum Thema Batch & Shell ...

SAN, NAS, DAS
gelöst Synology DS1817+ RAID nachträglich erweitern (6)

Frage von smartino zum Thema SAN, NAS, DAS ...

Microsoft Office
gelöst Micorsoft Excel: Variable Anzeige von mehreren Werten anhand von Stammdaten (1)

Frage von sammy65 zum Thema Microsoft Office ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
Windows Userverwaltung
gelöst Wie verfahrt Ihr mit den Windows-Benutzerkonten und -dateien von ausgeschiedenen Mitarbeitern? (14)

Frage von Bl0ckS1z3 zum Thema Windows Userverwaltung ...

Exchange Server
Microsoft Exchange Weiterleitung mit anderer primären E-Mail Adresse (14)

Frage von Rene12345 zum Thema Exchange Server ...

LAN, WAN, Wireless
Devolo DLAN 500 pro Wireless+ (13)

Frage von IceAge zum Thema LAN, WAN, Wireless ...

Microsoft
gelöst Subnetting: In welchem Subnetz befindet sich die IP? (12)

Frage von winler zum Thema Microsoft ...