azrael995
Goto Top

Problem mit der Eingabe durch user in einem batch Skript

Hi @,

ich habe ein batchprogramm geschrieben, dass auf bestimmte Werte in der Eingabe triggert.
Wenn ich das bei einer konstanten Zeichenfolge laufen lasse funktioniert das ganze einwandfrei

Aber wenn ich die Variable mit

set /P Variable=
vom User einlesen will dann triggert er nicht mehr

Ich hab Ger als Tastatur und denke, dass es vlt daran liegt, dasss bei der batch vermutlich USA Tastatur verwendet wird

daher 2 Fragen:
weiss einer wie man vlt die Tastatur oder die Codepages im batch-file umstellen bzw synchronisieren kann
oder:
Weiss einer wie ich die Werte via Universalcode (vlt ASCI-Code) synchronisieren kann

Danke für die Mühe im Voraus und gl hf,

arael995

Content-ID: 173506

Url: https://administrator.de/contentid/173506

Ausgedruckt am: 25.11.2024 um 04:11 Uhr

Skyemugen
Skyemugen 22.09.2011 um 10:15:42 Uhr
Goto Top
Aloha,

macht für mich relativ wenig Sinn, ausgenommen, du willst zwangsläufig (deutsche) Umlaute dort eingegeben haben ...

Da wir nicht wissen, wie du triggerst, sprich, was mit der Variable geschieht, ist eine Lösungsfindung schwierig, an sich jedoch dürfte bei der Eingabe lateinischer Buchstaben und arabischen Zahlen batch ziemlich egal sein, wie sie ins Programm kommen (brauchst ja bloß mal, dein Eingabegebietsschema auf US ändern ...)

Wenn ein Problem mit DE-US besteht, dann eventuell eher beim Verarbeiten der Variable. Aber meine Kristallkugel ...

greetz André

P.S.: chcp - ganz toller Befehl
azrael995
azrael995 22.09.2011 um 10:48:47 Uhr
Goto Top
das sind einfache if vergleiche, der auf die einzelnen Umlaute reagert d.h.:

if  /i  "%bla%" == "ü" goto blabla   

denn die Buchstaben komen dort einzeln an in der Schleife
aber das prob is:

dass in der Eingabe z.B kann er ein ü darstellen und richtig einlesen, aber er erkennt das ü wenn er es mit meinem ü vergleicht nicht
wenn ich dagegen die konstanten z.b
 set Variable= übel


als konstanten Wert eintrage gibt er mir als Zeichen in der Schleife kein ü sondern ein Kubik an d.h ^3

dass mit chcp is ne gute Idee und werd ich gleich probieren

thx azrael
azrael995
azrael995 22.09.2011 um 10:59:44 Uhr
Goto Top
chcp sagt bei meiner batch die richtige codepageseite 850

aber das erklärt mir noch weniger, wieso er nach der Eingabe durch den User die richtigen Zeichen ansonsten die falschen, welche er aber triggert zeigt

now i m totally confused^^
Skyemugen
Skyemugen 22.09.2011 um 11:04:12 Uhr
Goto Top
Aloha,

chcp an sich bewirkt auch nichts, du musst schon selbst die gewollte, neue Codepage mit angeben ...

Also du has die Wahl:
  • wenn du die Abfrage mit Umlauten gestaltest, dann bearbeite entweder die batch am CMD mit EDIT X:\PfadZur\batch.bat und schreibe dort die Umlaute rein und speichere dann.

@echo off & setlocal
set /p Eingabe=
if /i %Eingabe% equ  echo Umlaut durch EDIT erkannt
if /i %Eingabe% neq ü echo Umlaut nicht erkannt (das hier wurde ohne EDIT geschrieben)
pause
goto :eof

oder eben
  • mit chcp 1252
set /p Eingabe=
chcp 1252>nul
if /i %Eingabe% equ ü echo Umlaut erkannt
chcp 850>nul

greetz André
azrael995
azrael995 22.09.2011 um 11:24:22 Uhr
Goto Top
Vielen Dank Andre,

ich use Nr. 2. geht Alles sehr gut und ebenso Danke für die schnelle Antwort