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, 11071 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
CMD Verschlüsslung ( Batch )
gelöst Frage von clragonBatch & Shell12 Kommentare

Seid gegrüsst Krieger, Profis und Götter, Älteste und Schamanen, Weise und Einsiedler, Monster und Bürofacharbeiter. Wie ihre im Titel ...

Windows Installation
CMD-Batch Programmstart Befehle
Frage von timsen96Windows Installation1 Kommentar

Schönen guten Tag zusammen, ich möchte gerne über eine cmd oder batch datei ein Programm oder Installation öffnen und ...

Batch & Shell
IP-Adresse in Batch, CMD
gelöst Frage von MaxophoniBatch & Shell12 Kommentare

Hallo, ich möchte in einer Batch-Datei eine Variable einfügen, die nur die IP-Adresse anzeigt. Dies funktioniert mittels ipconfig, doch ...

Windows Tools
Suche Batch Scheduler (.bat .cmd .exe)
Frage von hf1965Windows Tools8 Kommentare

Hallo, sicherlich eine Herausforderung, für betagte 16 Bit System noch geeignete Software zu finden. Wie führen in unserem Batch-Processing ...

Neue Wissensbeiträge
Windows 10

Windows 10 kann XPS erzeugen aber nicht anzeigen ????

Erfahrungsbericht von Deepsys vor 22 StundenWindows 10

Heute schickt mir ein Kollegen eine E-Mail mit einer XPS-Datei vom Kunden im Anhang und fragt wie er diese ...

Exchange Server

1und1 IONOS: Probleme beim Mailversand mit Exchange

Information von reksierp vor 1 TagExchange Server3 Kommentare

Hallo, seit Do, 17.1.19 etwa Mittags nimmt 1und1 IONOS keine Mails mehr über den Standard-Port SMTP 25 an. Nachdem ...

LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 1 TagLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 3 TagenWindows Mobile1 Kommentar

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Wo lässt sich das Gateway in der FRITZ!Box 7360 einstellen?
gelöst Frage von OssabowLAN, WAN, Wireless16 Kommentare

Hallo all, nach gründlicher Suche scheine ich der einzige zu sein der das Problem hat (macht micht schon mal ...

Windows Server
MSSQL Backup in Form von .sql einspielen
Frage von janosch12Windows Server14 Kommentare

Guten Morgen, wir verwenden das Tool SQLandFTPBackup ( ) zum sichern einiger MSSQL Datenbanken. Nun sichert das Toll die ...

Windows Server
Sicherung Domain Controller
gelöst Frage von Monto1Windows Server13 Kommentare

Hallo zusammen, wie sichert Ihr den Domain Controller? Selbst, wenn zwei parallel laufen, ist eine Sicherung doch mal nützlich. ...

Microsoft Office
Office 2016 oder Office 2019
Frage von PeterzMicrosoft Office13 Kommentare

Hallo zusammen, wir müssen unser Office von 2010 auf eine neuere Version Umstellen. Jetzt stellt sich die Frage, ob ...