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

IF-Abfrage welche auf Sonderzeichen und Zahlen reagiert

Frage Entwicklung Batch & Shell

Mitglied: 74487

74487 (Level 1)

30.01.2009, aktualisiert 17:01 Uhr, 4046 Aufrufe, 16 Kommentare

Halloooooooo,

ich bin es wieder. ;)

Meine heutige Frage ist; wie sieht ein Script für eine IF-Abfrage aus, wenn es reagieren soll wenn das Wort Zahlen und/oder Sonderzeichen enthält?

Also quasi:


IF %wort%= Sonderzeichen und/oder Zahlen beinhaltet goto Befehl bla blubb


Über Antworten freue ich mich selbstverständlich.


Schönen Abend noch, René Wayne.
Mitglied: bastla
30.01.2009 um 17:17 Uhr
Hallo Notzke!

Das hängt zumindest von Deiner Definition für "Sonderzeichen" ab ...

Wäre es nicht ev sinnvoller, eine Liste der "erlaubten" Zeichen vorzugeben?

Grüße
bastla
Bitte warten ..
Mitglied: 74487
30.01.2009 um 23:22 Uhr
Naja Zahlen und Bindestriche. Erlaubt halt nur Buchstaben (groß und klein). Egal wie, hauptsache es kommt ein Ergebnis
Bitte warten ..
Mitglied: bastla
30.01.2009 um 23:28 Uhr
Hallo Notzke!

Dann etwa so:
01.
@echo off & setlocal 
02.
set "Erlaubt=AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" 
03.
 
04.
set C=%temp%\CheckChars.vbs 
05.
>%C% echo T=WScript.Arguments(0):E="OK":For i=1 To Len(T):If InStr("%Erlaubt%",Mid(T,i,1))=0 Then:E="":Exit For:End If:Next:WScript.Echo E 
06.
 
07.
set /p "Wort=Bitte zu untersuchendes Wort eingeben: " 
08.
 
09.
if not defined Wort (echo Kein Wort eingegeben! & pause & goto :eof) 
10.
 
11.
set Check= 
12.
for /f %%i in ('cscript //nologo %C% "%Wort%"') do set "Check=%%i" 
13.
If "%Check%" neq "OK" (echo Wort nicht OK! & pause & goto :eof) 
14.
echo OK: "%Wort%"
Grüße
bastla
Bitte warten ..
Mitglied: 74487
02.02.2009 um 15:07 Uhr
Naja das Script ansich läuft ja - nur hätte ich das gerne ohne Abfrage sondern das er automatisch sich eine vorher gesetzte Variable nimmt und diese prüft.
Bitte warten ..
Mitglied: bastla
02.02.2009 um 15:17 Uhr
Hallo Notzke!

Wer oder was hält Dich davon ab, die Zeile 7 auf
set "Wort=%vorhergesetzteVariable%"
zu ändern?

Vielleicht ja die Möglichkeit, einfach in Zeile 12 anstelle von %Wort% Deine %vorhergesetzteVariable% zu verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: 74487
02.02.2009 um 15:29 Uhr
Das habe ich auch schon probiert. Allerdings sagte er dann durchgehend dass das Wort falsch wäre.
Bitte warten ..
Mitglied: bastla
02.02.2009 um 15:36 Uhr
Allerdings sagte er dann durchgehend dass das Wort falsch wäre.
... was ja daran liegen könnte, dass es nicht ganz richtig ist ...

Da Leerzeichen nicht in der "Erlaubt"-Liste stehen: Könnte es sein, dass etwa am Ende Deines Wortes noch das eine oder andere LEerzeichen herumhängt? Lässt sich leicht prüfen, indem Du folgende Ausgabezeile einbaust:
echo #%vorhergesetzteVariable%%#
Die Begrenzung durch die "#" (oder ein beliebiges anderes auffälliges Zeichen) zeigt, wo Dein Wort tatsächlich endet (oder ev auch beginnt).

Falls dieser Ansatz auch keinen Erfolg bringt, bitte Deinen Batch (inkl. Zuweisung an die besagte Variable bzw Beispiel für ein falsch als "falsch" beurteiltes Wort) posten (und dabei bitte von der Möglichkeit der Formatierung als Code Gebrauch machen).

Grüße
bastla
Bitte warten ..
Mitglied: 74487
02.02.2009 um 15:41 Uhr
in der users.txt stehen pro Zeile Users drinnen welche mit der Schleife einen nach den anderen gelesen wird und dann geprüft werden soll. die korrekt geprüften kommen in die test.txt, die falschen sind egal. Danach soll er wieder hoch springen zu start.


01.
@echo off & setlocal 
02.
 
03.
set x=0 
04.
 
05.
:start  
06.
 
07.
set /a x=%x%+1 
08.
 
09.
REM Username auslesen 
10.
 
11.
for /f "tokens=1,* delims=:" %%i in ('findstr /n  $ users.txt') do @(  
12.
    for /L %%a in (%x%,%x%,%x%) do @if %%i==%%a @set user=%%j 
13.
 
14.
set "Erlaubt=AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" 
15.
 
16.
set C=CheckChars.vbs 
17.
>%C% echo T=WScript.Arguments(0):E="OK":For i=1 To Len(T):If InStr("%Erlaubt%",Mid(T,i,1))=0 Then:E="":Exit For:End If:Next:WScript.Echo E 
18.
 
19.
set "Wort=%user%" 
20.
 
21.
if not defined Wort (echo Kein Wort eingegeben! & pause & goto :eof) 
22.
 
23.
set Check= 
24.
for /f %%i in ('cscript //nologo %C% "%Wort%"') do set "Check=%%i" 
25.
If "%Check%" neq "OK" (echo Wort nicht OK! & pause & goto :eof) 
26.
echo %Wort% >>test.txt 
27.
 
28.
goto start
Bitte warten ..
Mitglied: bastla
02.02.2009 um 15:53 Uhr
Hallo Notzke!

Dann sollte doch (ungetestet) etwa folgendes genügen:
01.
@echo off & setlocal 
02.
set "Erlaubt=AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" 
03.
set C=CheckChars.vbs 
04.
>%C% echo T=WScript.Arguments(0):E="OK":For i=1 To Len(T):If InStr("%Erlaubt%",Mid(T,i,1))=0 Then:E="":Exit For:End If:Next:WScript.Echo E 
05.
 
06.
 
07.
REM Usernamen auslesen 
08.
for /f "delims=" %%i in (users.txt) do for /f %%a in ('cscript //nologo %C% "%%i"') do if "%%a"=="OK" echo %%j>>test.txt
Grüße
bastla

P.S.: Sorry, wenn ich Dich mit der Bitte um "Code"-Formatierung überfordert haben sollte ...
Bitte warten ..
Mitglied: 74487
02.02.2009 um 15:58 Uhr
Sieht schon gut aus - aber irgendwie wird keine test.txt erzeugt.
Bitte warten ..
Mitglied: bastla
02.02.2009 um 17:02 Uhr
Mit %%i in Zeile 8 sollte es besser gehen:
for /f "delims=" %%i in (users.txt) do for /f %%a in ('cscript //nologo %C% "%%i"') do if "%%a"=="OK" echo %%i>>test.txt
Grüße
bastla
Bitte warten ..
Mitglied: 74487
03.02.2009 um 08:13 Uhr
Ich hab das mal laufen lassen und hier ein Ausschnitt von dem was dann in der DOS-Box steht:

C:\Users\rewirdemann>for /F %a in ('cscript //nologo CheckChars.vbs "HHAzubi "') do if "%a" == "OK"
echo Gast 1>>test.txt

wo kommt die 1 her?
Bitte warten ..
Mitglied: bastla
03.02.2009 um 08:53 Uhr
Hallo Notzke!

Die wesentlich wichtigere Frage wäre wohl: Wo kommt die 1 hin? Antwort: Nur auf den Bildschirm, aber nicht in Deine Datei ...

Um aber Dein Interesse zu würdigen: Mit der 1 wird der verwendete Ausgabekanal (in diesem Fall: STDOUT) angezeigt.

Grüße
bastla
Bitte warten ..
Mitglied: 74487
03.02.2009 um 08:55 Uhr
Ich glaub ich hab den Fehler gefunden. In der Users.txt ist in jeder Zeile nach dem Namen ein Leerzeichen. Als ich die mal probeweise weggemacht habe, ging alles.

Jetzt die Frage: Wie bekomm ich die Leerzeichen (1 Leerschritt hinter jeden Wort) weg? O
Bitte warten ..
Mitglied: 74487
03.02.2009 um 09:01 Uhr
Also so bekomm ich die Leerzeichen (2) vor dem Wort weg. Vielleicht kann man das erweitern das man das eine hinter dem Wort auch wegbekommt.

01.
@echo off & setlocal  
02.
set "infile=quelle.txt"  
03.
set "outfile=users.txt"  
04.
if exist "%outfile%" del "%outfile%"  
05.
FOR /F "usebackq tokens=1,2,*" %%a in ("%infile%") do (echo %%a %%b)>>"%outfile%" 
06.
 
07.
 
08.
set "Erlaubt=AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" 
09.
set C=CheckChars.vbs 
10.
>%C% echo T=WScript.Arguments(0):E="OK":For i=1 To Len(T):If InStr("%Erlaubt%",Mid(T,i,1)) 
11.
 
12.
=0 Then:E="":Exit For:End If:Next:WScript.Echo E 
13.
 
14.
for /f "delims=" %%i in (users.txt) do for /f %%a in ('cscript //nologo %C% "%%i"') do if  
15.
 
16.
"%%a"=="OK" echo %%i>>test.txt 
17.
 
Bitte warten ..
Mitglied: bastla
03.02.2009 um 10:41 Uhr
Hallo Notzke!

Es wäre durchaus vorteilhaft, wenn Du einmal den allgemeinen Aufbau der "users.txt" beschreiben könntest (bisher war ich davon ausgegangen, dass je Zeile nur ein Username - und sonst nix - gespeichert ist).

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Exchange Server
Sonderzeichen im Namen - Wie reagiert der Exchange?
Frage von SirTobi27Exchange Server2 Kommentare

Hallo zusammen, ich dachte mir ich frage erstmal hier, bevor ich selbst irgendwelche Tests mache. Vielleicht hat jemand direkt ...

Windows 7
If Abfrage in Batchdatei
gelöst Frage von sammy65Windows 76 Kommentare

Hallo miteinander, ich möchte eine cfg.Datei in ein Verzeichnis kopieren. Da ich sowohl Windows 7 32 bit und 64 ...

Batch & Shell
Powershell IF Abfrage Vergleichsoperatoren
gelöst Frage von PeterzBatch & Shell4 Kommentare

Hallo, ich möchte in einer IF Abfrage Vergleichsoperatoren verknüpfen und bekomme es nicht hin. Es sollte so aussehen: IF ...

Entwicklung
Verschachtelte IF Abfrage Powershell
gelöst Frage von HanutaEntwicklung19 Kommentare

Hallo Zusammen, habe ein Programm, das es in verschiedenen Versionen gibt 4.5.0 4.5.3 4.6.2 4.6.3 Das Programm soll überall ...

Neue Wissensbeiträge
Windows 10

Windows 10 Hello-Anmeldung per Foto ausgehebelt

Tipp von kgborn vor 1 StundeWindows 10

Windows Hello ist eine Funktion, um sich per Fingerabdruck-, Gesichts- oder Iriserkennung bei Windows 10-Geräten anzumelden (siehe), setzt aber ...

Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 9 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 9 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1012 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Heiß diskutierte Inhalte
Windows Server
SCCM 2016: PXE Boot des Clients schlägt fehl
Frage von gabeBUWindows Server22 Kommentare

Hallo Zusammen Ich habe eine Testumgebung erstellt um über SCCM 2016 einen virtuellen Client aufzusetzen. Folgende Maschinen habe ich ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen19 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Logging von "gesendeten Nachrichten" auf Terminalservern
gelöst Frage von Z3R0C0MM4N0THiN6Windows Server10 Kommentare

Hallo zusammen, kann mir jemand auf kurzem Wege sagen ob 1) die per Task-Manager (oder damals tsadmin) an Benutzer ...