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

Frage Entwicklung Batch & Shell

Mitglied: -heny-

-heny- (Level 1) - Jetzt verbinden

11.04.2008, aktualisiert 12.04.2008, 4950 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
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser7 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...