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

Frage Entwicklung Batch & Shell

GELÖST

Variable erweitern

Mitglied: zensbert

zensbert (Level 1) - Jetzt verbinden

03.05.2014, aktualisiert 14:31 Uhr, 1425 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
Powershell - Werte in Variable durch Schleife erweitern bzw. ändern
gelöst Frage von ralfkauskBatch & Shell5 Kommentare

Hallo zusammen Ich habe mir ein Skript gebaut mit dem ich unser AD Abfrage und mir anhand eines Benutzernamens ...

Switche und Hubs
Switch erweitern
gelöst Frage von ruseiSwitche und Hubs11 Kommentare

Hallo Profis, habe einen Switch Netgear JGS524E am Laufen. Nun gibt es das Problem, dass ich in manchen Räumen ...

Hardware
Multimediadosen erweitern?
Frage von derRAV3NHardware1 Kommentar

Guten Tag. Ich hab mal wieder Fragen, wobei ich mir nicht so ganz sicher bin, ob ich hier damit ...

Batch & Shell
Mit zusammengesetzter Variable auf andere Variable zugreifen
gelöst Frage von abiberBatch & Shell2 Kommentare

Hallo zusammen, ich möchte in einer Batch Datei über Robocopy auf mehrere Rechner Dateien verteilen. Dazu möchte ich am ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...