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 Sternchen (Asterisk) ersetzen

Mitglied: -heny-

-heny- (Level 1) - Jetzt verbinden

11.04.2008, aktualisiert 12.04.2008, 5007 Aufrufe, 5 Kommentare

Hallo,

gegeben sei folgender Codeschnipsel:

01.
@echo off
02.
set "string=a*b"
03.
set "string=%string:*=%"
04.
echo %string%
05.
pause
Warum stürzt das Batch-File ab, wenn ich versuchen will ein Sternchen in einem String zu ersetzen? Ich habe auch schon probiert das Sternchen zu maskieren, was mir allerdings auch keinen Erfolg gebracht hat.

Gruß,
heny
Mitglied: SarekHL
11.04.2008 um 20:09 Uhr
Wenn das Sternchen in String-Operationen ähnliche Bedeutung hat wie in Dateioperationen (Platzhalter für eine beliebige Zeichenkette), dann kann ich mir schon vorstellen, daß der Rechner ein Problem hat, eine solche Batch auszuführen ...
Bitte warten ..
Mitglied: bastla
11.04.2008 um 20:22 Uhr
Hallo -heny-!

SarekHL liegt mit seiner Vermutung ziemlich richtig - die Erklärung findest Du in der Hilfe zu "set":
Wenn "str1" mit einem Sternchen beginnt, steht "str1" für alles zwischen dem Anfang der erweiterten Ausgabe bis zum ersten Auftreten des übrigen Abschnitts von "str1".

Biber hätte sicherlich eine bessere Lösung, aber als Workaround könntest Du es (nach dem Ersetzen aller anderen Sonderzeichen) so versuchen:
01.
for /f "tokens=1-10 delims=*" %%a in ("%string%") do set "string=%%a%%b%%c%%d%%e%%f%%g%%h%%i%%j"
Solltst Du mehr als 9 Positionen mit "*" (unmittelbar aufeinanderfolgende Sterne werden nur einmal gezählt) erwarten, müsstest Du eben noch mehr Buchstaben des Alphabets bemühen ...

Alternative:
01.
@echo off & setlocal enabledelayedexpansion
02.
set "string=a**b*c**d***e**f*g"
03.
echo %string%
04.

05.
:: Länge des Strings über Temporärdatei bestimmen;
06.
:: dann noch -1 (da Zählung in der Schleife ab 0)
07.
echo %string%>%temp%\GetLen.tmp
08.
for %%i in (%temp%\GetLen.tmp) do set /a Len=(%%~zi-2)-1
09.
del %temp%\GetLen.tmp
10.

11.
set tempstring=
12.
for /l %%i in (0,1,%Len%) do if "!string:~%%i,1!" neq "*" set "tempstring=!tempstring!!string:~%%i,1!"
13.
set "string=%tempstring%"
14.

15.
echo %string%
16.
pause
Alternative zu einem Teil der Alternative : Die Längenbestimmung kannst Du einsparen und für die Schleife eine maximale Zeichenanzahl vorgeben - für max 100 Zeichen sähe das dann so aus:
01.
@echo off & setlocal enabledelayedexpansion
02.
set "string=a**b*c**d***e**f*g"
03.
echo %string%
04.

05.
set tempstring=
06.
for /l %%i in (0,1,99) do if "!string:~%%i,1!" neq "*" set "tempstring=!tempstring!!string:~%%i,1!"
07.
set "string=%tempstring%"
08.

09.
echo %string%
10.
pause
Grüße
bastla
Bitte warten ..
Mitglied: -heny-
11.04.2008 um 20:58 Uhr
Hallo,

danke für die Mühe, allerdings ist mir das ein wenig zu umständlich. Ich schau mal, ob Biber mit einer einfacheren Lösung aufwarten kann. Falls dem nicht so ist, werde ich natürlich dankend auf deine Variante zurückgreifen.

Gruß,
heny
Bitte warten ..
Mitglied: Biber
12.04.2008 um 21:55 Uhr
Moin -heny-,

eine grundsätzlich andere Strategie als bastla hätte auch nicht zu bieten im Batch - es geht IMHO nur über eine FOR /F-Anweisung mit "delims=*".
Die erste einzeilige Alternative oben wäre exakt auch meine Antwort gewesen.

Ich würde bestenfalls überlegen, diese Sonderzeichen-Eliminierung mit VBSkript und dem RegExp-Objekt anzugehen statt mit native Batch.

Grüße
Biber
Bitte warten ..
Mitglied: -heny-
12.04.2008 um 22:48 Uhr
Hallo,

ok, trotzdem vielen Dank. VBScript kommt mir allerdings nicht in die Tüte, da ich das Skript plain weitergeben werde und der User nicht darauf angewiesen sein soll, VBScript lauffähig zu haben.

Gruß,
heny
Bitte warten ..
Ähnliche Inhalte
Linux
Welchen Asterisk?
Frage von krodonLinux13 Kommentare

Hallo, ich möchte unsere Starface durch einen Preiswerteren Asterisk ersetzen. Nun stelle ich mir die Frage welche Distribution ich ...

TK-Netze & Geräte
Asterisk CallCompletionRequest
Frage von Monto1TK-Netze & Geräte

Hallo zusammen, benutzt jemand mit Asterisk das CallCompletionRequest? (Rückruf bei besetzt bzw nicht melden) Ich habe es mir mal ...

TK-Netze & Geräte
Asterisk als Unteranlage
Frage von 107459TK-Netze & Geräte5 Kommentare

Hallo, ich würde gern ein Szenario wie in dem Link beschrieben realisieren. Wir haben eine Auerswald Basic2 und möchten ...

Linux
Installation der Asterisk GUI
Anleitung von 107459Linux

Vorbereitung Installation von subversion (falls nicht vorhanden) apt-get install subversion Herunterladen des SourceCodes: svn checkout asterisk-gui Bauen der Pakete: ...

Neue Wissensbeiträge
Sicherheit
Have i been pwned Datensammlung lokal durchsuchen
Information von sabines vor 5 StundenSicherheit2 Kommentare

Heise beschreibt in diesem Artikel wie man seine eigenen Passwörter prüfen kann. Da viele den Weg der Onlineprüfung scheuen, ...

Windows 10

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

Erfahrungsbericht von Deepsys vor 1 TagWindows 101 Kommentar

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 2 TagenExchange 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 2 TagenLAN, WAN, Wireless

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

Heiß diskutierte Inhalte
Windows Server
Sicherung Domain Controller
gelöst Frage von Monto1Windows Server22 Kommentare

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

Backup
Was spricht gegen die veeam backup free edition?
Frage von keine-ahnungBackup20 Kommentare

Moin at all, aktuell plane ich die Umstellung meiner sehr überschaubaren Umgebung (3 Büchsen, davon 1 SBS2011 physisch, ein ...

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

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

Windows Server
Windows User Freigaben anzeigen lassen
Frage von fritte87Windows Server18 Kommentare

Hallo zusammen, gibt es eine Möglichkeit aus User Sicht anzeigen zu lassen, welche Freigaben er alle besitzt? Wir haben ...