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 CMD-Batch - Problem mit Sonderzeichen beim Auslesen eines Textes in eine Variable

Mitglied: Destry

Destry (Level 1) - Jetzt verbinden

01.04.2008, aktualisiert 15:06 Uhr, 11035 Aufrufe, 5 Kommentare

Hallo allerseits,

nachdem ich hier im Forum schon "lesenderweise" viel Hilfe erfahren habe, möchte ich mich heute "schreibenderweise" an Euch wenden.
Hier mein Problem:

Umgebung:
Windows XP, Sp3, keine dritten Programme.

Ich sammle zur Zeit mit den Befehlen "dsquery" und dsget" Informationen über Nutzerkonten.
Dabei sollen die Informationen in Variable gelenkt werden um sie weiter verwenden zu können.
Eine Information ist die Beschreibung eines Nutzerkontos. Durch eine Abfrage die ich in eine Textdatei umlenke bekomme ich folgende Ausgabe:

--desc------------------------------------------
--Mitarbeiter Systems & Application Management--
dsget succeeded

Erklärung:
In der ersten Zeile steht der Parameter der Abfrage (desc=Description)
In der zweiten Zeile stehe die eigentliche Information.
In der dritten Zeile steht die Erfolgsmeldung des Befehls.
ACHTUNG: Die Striche (-) sind kein Inhalt der Ausgabe. Sie sollen hier für die "unsichtbaren" Leerzeichen stehen.

Um die Textdatei auszulesen habe ich mich einer Batch (von Biber) aus dem Forum bedient:

01.
::----- Schnipp ----- 
02.
@echo off 
03.
 
04.
echo Kennung eingeben: 
05.
set /P TPL_SAMID= 
06.
 
07.
dsquery user -samid %TPL_SAMID% | dsget user -desc > %TPL_SAMID%_Description_Query_01.txt 
08.
 
09.
for /f "delims=" %%i in (%TPL_SAMID%_Description_Query_01.txt) do call :SET_NEW_QUERY_DESC_VAR %%i 
10.
goto :GO_ON_QUERY_DESC 
11.
 
12.
:SET_NEW_QUERY_DESC_VAR 
13.
set NEW_QUERY_DESC_VAR=%NEW_QUERY_DESC_VAR%!%* 
14.
goto :EOF 
15.
 
16.
:GO_ON_QUERY_DESC 
17.
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_DESC_VAR%") do @set NEW_DESCRIPTION=%%j 
18.
 
19.
echo "%NEW_DESCRIPTION%" 
20.
::----- Schnapp -----
Erklärung:
1.) Nutzerkennung eingeben.
2.) Abfrage nach der Beschreibung des Nutzerkontos.
3.) Zeilenweises Auslesen der Textdatei (Inhalt siehe oben) in eine Variable mit dem "!" als Delimiter.
4.) Auslesen dieser Variable des zweiten Tokens in eine neue Variable.

Diese Abfrage funktioniert im Normalfall auch wunderbar.
Hier das Problem:

Das "&".
Wenn im auszulesenden Text ein "&" vorkommt greift der Call-Befehl aus der ersten For-Schleife ins Leere weil es als Kommando interpretiert wird.
Ich habe schon versucht die Variablen in Anführungszeichen zu stellen, aber dann bekomme ich die ganzen Leerzeichen mit, und die kann ich nicht gebrauchen.

Ziel soll sein das der Text

Mitarbeiter Systems & Application Management

ohne Leer- oder Anführungszeichen in einer Variablen steht.

Habt ihr dafür vielleicht einen Vorschlag?
Bitte bleibt bei der DOS-Shell.
Ich weiß das es in anderen Programmiersprachen einfachere Lösungen gibt, aber mich reizt das Problem.

Vielen Dank für eure Unterstützung.

Gruß,
Destry


[Edit Biber] Als <code> formatiert. Und wenigstens im Titel den "DOS-Batch" umbenannt in "CMD-Batch". [/Edit]
Mitglied: bastla
01.04.2008 um 12:18 Uhr
Hallo Destry und willkommen als schreibender Teilnehmer!

Vielleicht (allerdings gänzlich ungetestet) so:
01.
@echo off 
02.
 
03.
echo Kennung eingeben: 
04.
set /P TPL_SAMID= 
05.
 
06.
dsquery user -samid %TPL_SAMID% | dsget user -desc > %TPL_SAMID%_Description_Query_01.txt 
07.
 
08.
for /f "delims=" %%i in (%TPL_SAMID%_Description_Query_01.txt) do call :SET_NEW_QUERY_DESC_VAR "%%i" 
09.
goto :GO_ON_QUERY_DESC 
10.
 
11.
:SET_NEW_QUERY_DESC_VAR 
12.
set "NEW_QUERY_DESC_VAR=%NEW_QUERY_DESC_VAR%!%~*" 
13.
goto :EOF 
14.
 
15.
:GO_ON_QUERY_DESC 
16.
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_DESC_VAR%") do @set NEW_DESCRIPTION=%%j 
17.
 
18.
echo "%NEW_DESCRIPTION%"
Grüße
bastla
Bitte warten ..
Mitglied: Destry
01.04.2008 um 13:38 Uhr
Hallo Bastla,

danke für den warmen Empfang und den Hilfeversuch.
Leider geht es so nicht.

Das sind die Fehlermeldungen:

Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters
ist ungültig: %~*"

Geben Sie CALL /? oder FOR /? ein, um herauszufinden, welche Formate gültig sind.
":SET_NEW_QUERY_DESC_VAR
" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Klingt übel, aber danke.

Gruß,
Destry
Bitte warten ..
Mitglied: bastla
01.04.2008 um 14:11 Uhr
Hallo Destry!

Na gut, dann neuer Versuch:
01.
@echo off & setlocal 
02.
 
03.
echo Kennung eingeben: 
04.
set /P TPL_SAMID= 
05.
 
06.
dsquery user -samid %TPL_SAMID% | dsget user -desc > %TPL_SAMID%_Description_Query_01.txt 
07.
 
08.
for /f "delims=" %%i in (%TPL_SAMID%_Description_Query_01.txt) do call :SET_NEW_QUERY_DESC_VAR "%%i" 
09.
goto :GO_ON_QUERY_DESC 
10.
 
11.
:SET_NEW_QUERY_DESC_VAR 
12.
set "NEW_QUERY_DESC_VAR=%NEW_QUERY_DESC_VAR%!%~1" 
13.
goto :EOF 
14.
 
15.
:GO_ON_QUERY_DESC 
16.
for /f "tokens=1,2 delims=!" %%i in ("%NEW_QUERY_DESC_VAR%") do @set NEW_DESCRIPTION=%%j 
17.
 
18.
:Loop1 
19.
if "%NEW_DESCRIPTION:~0,1%" neq " " goto :Loop2 
20.
set "NEW_DESCRIPTION=%NEW_DESCRIPTION:~1%" 
21.
goto :Loop1 
22.
 
23.
:Loop2 
24.
if "%NEW_DESCRIPTION:~-1%" neq " " goto :Done 
25.
set "NEW_DESCRIPTION=%NEW_DESCRIPTION:~0,-1%" 
26.
goto :Loop2 
27.
 
28.
:Done 
29.
echo "%NEW_DESCRIPTION%"
Grüße
bastla
Bitte warten ..
Mitglied: Destry
01.04.2008 um 14:45 Uhr
Hey Bastla,

es klappt. Vielen Dank dafür.
Es bleiben zwar noch die Anführungszeichen am Anfang und am Ende, aber immerhin.
Super Arbeit.

Magst Du mir noch erklären was in den Loops passiert?
Die Parameter sind mir nicht geläufig und im Test habe ich Deiner Logik nicht folgen können.

Nochmals danke.

Gruß,
Destry
Bitte warten ..
Mitglied: Destry
01.04.2008 um 15:05 Uhr
Hallo Bastla,

ich habe nochmal genauer hingeguckt und da sind ja gar keine Anführungsstriche mehr.
Die Loops habe ich jetzt auch verstanden.

Nochmals danke für das Licht.

Gruß,
Destry
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Text Zeilenweise auslesen und variable überprüfen

Frage von BruendlBatch & Shell11 Kommentare

Moin Moin, ich habe eine Textdatei mit folgendem Inhalt: ich möchte jetzt gerne die beiden Werte, die von einem ...

Batch & Shell

In Batch eine Text Variable und ein Array vergleichen

Frage von DrMarksmanBatch & Shell5 Kommentare

Hallo Leute! Ich habe mich wieder zu meinen Ursprüngen des Programmierens zurück begeben und bin dabei ein kleines Programm ...

Batch & Shell

Bestimmte CMD Zeile aus Batch auslesen

gelöst Frage von BatchAnfaenger91Batch & Shell5 Kommentare

Hallo ihr Lieben, habe seit dem neusten Batch Sprache kennengelernt und bin dabei ein Batch Skript zu schreiben ich ...

Batch & Shell

Sonderzeichen in der CMD Konsole darstellen?

gelöst Frage von PinkFLuffyUnicornBatch & Shell1 Kommentar

Hi, habe ein Video auf YouToube gesehen, wo eine Batch-Oberfläche gezeigt wird, in dem Sonderzeichen wie dargestellt werden. hab ...

Neue Wissensbeiträge
Microsoft

Neuigkeiten zu Server und Office 365 was läuft mit was und was nicht

Tipp von AlFalcone vor 5 StundenMicrosoft

Server Betriebssysteme auf dem die verschiedenen Offices nicht supported sind: • Office 365 ist und wird nicht supported auf Windows ...

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 6 StundenSpeicherkarten1 Kommentar

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 8 StundenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 22 StundenHardware1 Kommentar

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Windows 10
Sysprep Fehler im Log kann nicht starten
Frage von grillinator95Windows 1022 Kommentare

Hallo, kann leider SYSPREP nicht mehr starten, Win10 64bit. Logfile sagt folgendes: 2018-10-17 13:44:56, Info SYSPRP 2018-10-17 13:44:56, Info ...

Apple
MacBook Pro 2018 mit 8 GB oder 16 GB
Frage von SysAdm81Apple14 Kommentare

Hallo zusammen, ich steh vor der Überlegung mir ein MacBook Pro 13 (2018) zu kaufen. Bzgl. SSD habe ich ...

Outlook & Mail
Outlook schiebt Mails aus Posteingang sofort in den Papierkorb
Frage von hermesOutlook & Mail13 Kommentare

Hallo Outlook Fachleute, wir haben hier das Problem, dass Outlook 2010 alle ankommenden Mails seit zwei Tagen einfach in ...

Sicherheitsgrundlagen
EuGH-Urteil - Internetanschluss für die ganze Familie - Filesharer haften trotzdem
Frage von StefanKittelSicherheitsgrundlagen12 Kommentare

Hallo, In diesem Artikel geht es darum, dass Jemand aus der Familie ein Hörbuch illegal hochgeladen hat. Der Vater ...