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, 4972 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 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 ...

Debian
EchoCancelation Asterisk
Frage von SpeakerSTDebian1 Kommentar

Hallo zusammen wir benutzten Asterisk als Telefon anlage, kann mjemand sagen wie ich im Dialplan extensions.ael für eine bestimmte ...

Batch & Shell
BATCH Datei nach Sternchen-Ordner suchen
gelöst Frage von ghoppeBatch & Shell9 Kommentare

Hallo zusammen, ich bin gerade dabei mir eine BAT-Datei zu basteln um die Profile vom Firefox per "Knopfdruck" kopieren ...

Neue Wissensbeiträge
SAN, NAS, DAS
QNAP NAS Datenschutz-Loop nach Firmware-Update
Tipp von vanTast vor 1 StundeSAN, NAS, DAS

Moin, im allgemeinen Trend seine geänderten Datenschutzbedingungen den Kunden zukommen zu lassen kam die Firma QNAP auf die glorreiche ...

Datenschutz
DSGVO Datenschutzgesetz
Anleitung von 1Werner1 vor 2 StundenDatenschutz4 Kommentare

Moin, ja was ist das, da ist die DSGVO Datenschutzverordnung. Wie das Gesetz gibt es schon 2 Jahre? Nun ...

CPU, RAM, Mainboards
Neverending story
Tipp von keine-ahnung vor 1 TagCPU, RAM, Mainboards1 Kommentar

Da kommt man mit dem fixen gar nicht mehr hinterher und die CPU erreichen wieder Rechenleistungen im Bereich des ...

Multimedia & Zubehör
AVM Fritz USB WLAN Sticks schneller einschalten
Tipp von NetzwerkDude vor 3 TagenMultimedia & Zubehör4 Kommentare

Die AVM Fritz WLAN Sticks haben in der Firmware 2 Modis: Einmal als Massenspeicher und einmal als WLAN Netzwerkkarte ...

Heiß diskutierte Inhalte
PHP
Nach Umzug zu 1und1 bekomme ich beim Eintrag in die DB Tabelle folgenden Fehler
gelöst Frage von jensgebkenPHP35 Kommentare

INSERT command denied to user 'dbo45342345342231244'@'112.127.102.073' for table 'orders'

LAN, WAN, Wireless
Powerline über zwei Stockwerke optimieren
Frage von DultusLAN, WAN, Wireless27 Kommentare

Guten Morgen liebes Forum, ich hätte einmal eine Frage bezüglich Powerline Adapter: Mein Problem ist seit gestern präsent, da ...

Windows Userverwaltung
Problem mit Benutzerprofil
Frage von lieferscheinWindows Userverwaltung24 Kommentare

Guten Tag liebe Community, folgendes Problem habe ich: User meldet sich auf Client A an - sein Homelaufwerk verbindet. ...

Rechtliche Fragen
DSGVO - Impressum und Datenschutz auf Anmeldeseiten notwendig?
Frage von StefanKittelRechtliche Fragen20 Kommentare

Hallo, was mit gerade eingefallen ist. Muss man auf Anmeldeseiten auch ein Impressum und Datenschutzhinweis haben? Auch hier wird ...