derwowusste
Goto Top

Batch-Input so abgreifen, als wäre die Tastatur auf en-us gestellt

Moin Kollegen!

Kennt jemand den vermutlich einfachen Kunstgriff, um die Variable Input, die man in Batch (oder Powershell) vom Windows-Nutzer abfragt über
set /p Input=umzuformende Eingabe?
vor der Weiterverarbeitung so umzuformen, als wäre sie mit englischem (en-us) Tastaturlayout eingegeben worden?

Sprich: Nutzer gibt zum Beispiel ein az?# aber es soll weiterverarbeitet werden als ay_\

PS: muss unbedingt auch auf 64-Bit-Systemen funktionieren!

Content-Key: 233504

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

Printed on: April 19, 2024 at 20:04 o'clock

Member: pieh-ejdsch
pieh-ejdsch Mar 24, 2014 at 20:03:05 (UTC)
Goto Top
Moin DWW,

Die choice von winfuture erfasst die Zeichen so. Die ist aber glaub ich 16 bit, ob sich das mit 64 bit verträgt?
eingabe ohne die x-zeilen sollte es so tun.
On the fly würde das ein Script mit xcopy-abfrage erledigen.
Ich muss aber erstmal ins Bett.

Gruß Phil
Member: DerWoWusste
DerWoWusste Mar 24, 2014 at 20:06:13 (UTC)
Goto Top
Hi Phil.

Nee, mit 16-Bit-Programmen keine Chance auf x64.
Member: Friemler
Friemler Mar 24, 2014 at 21:09:49 (UTC)
Goto Top
Hallo DWW,

falls es für Dich eine Option ist, das Tastaturlayout aus dem Batchscript heraus temporär auf en-us umzuschalten, um die Benutzereingabe zu erfassen, schau Dir das mal an.

Gruß
Friemler
Member: DerWoWusste
DerWoWusste Mar 24, 2014 at 21:17:55 (UTC)
Goto Top
Hi Friemler!

Ich habe es überflogen, sehe jedoch keinen Ansatz, das Tastaturlayout zu ändern. Beschrieben ist lediglich, wie man T.L.s hinzufügt, oder?
Member: Friemler
Solution Friemler Mar 24, 2014, updated at Mar 31, 2014 at 21:23:59 (UTC)
Goto Top
Hallo DWW,

doch, man kann das Tastaturlayout auch einfach nur umschalten, mit dem Default-Attribut des gs:InputLanguageID-Knotens in der XML-Datei. Anbei ein Beispielscript.

@echo off & setlocal

set "KeyboardUS=%TEMP%\KeyboardUS.xml"  
set "KeyboardDE=%TEMP%\KeyboardDE.xml"  
set "InputFile=%TEMP%\Input.txt"  


> "%KeyboardDE%" echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>  
>>"%KeyboardDE%" echo   ^<gs:UserList^>  
>>"%KeyboardDE%" echo     ^<gs:User UserID="Current"/^>  
>>"%KeyboardDE%" echo   ^</gs:UserList^>  
>>"%KeyboardDE%" echo   ^<gs:InputPreferences^>  
>>"%KeyboardDE%" echo     ^<gs:InputLanguageID Action="add" ID="0407:00000407" Default="true"/^>  
>>"%KeyboardDE%" echo   ^</gs:InputPreferences^>  
>>"%KeyboardDE%" echo ^</gs:GlobalizationServices^>  

> "%KeyboardUS%" echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>  
>>"%KeyboardUS%" echo   ^<gs:UserList^>  
>>"%KeyboardUS%" echo     ^<gs:User UserID="Current"/^>  
>>"%KeyboardUS%" echo   ^</gs:UserList^>  
>>"%KeyboardUS%" echo   ^<gs:InputPreferences^>  
>>"%KeyboardUS%" echo     ^<gs:InputLanguageID Action="add" ID="0409:00000409" Default="true"/^>  
>>"%KeyboardUS%" echo   ^</gs:InputPreferences^>  
>>"%KeyboardUS%" echo ^</gs:GlobalizationServices^>  


control intl.cpl,, /f:"%KeyboardUS%"  
start "" /wait cmd /c "set /p "Input=" & < NUL call set /p "=%%Input%%" > "%InputFile%""  
set /p "Input=" < "%InputFile%"  
control intl.cpl,, /f:"%KeyboardDE%"  

del "%KeyboardDE%"  
del "%KeyboardUS%"  
del "%InputFile%"  


< NUL set /p "=%Input%" & echo(  

Der Knackpunkt dabei ist, dass die Scriptzeilen zur Erfassung der Eingabe in einem eigenen (neu erzeugten) Fenster laufen, da die Umschaltung des Tastaturlayouts nur für Fenster wirksam ist, die nach der Umschaltung erstellt werden. Die dort erfassten Eingaben werden deshalb in eine temporäre Datei geschrieben, deren Inhalt im Hauptscript in eine Variable eingelesen und dann ausgewertet wird.

Gruß
Friemler
Member: DerWoWusste
DerWoWusste Mar 24, 2014 updated at 23:54:34 (UTC)
Goto Top
Ok, Du wirkst zuversichtlich.
Ich steige bei dem Output noch nicht durch. Kannst Du das bitte mal testen, indem Du als Input y eingibst und schaust, ob wirklich z in der Variable landet?
Member: rubberman
rubberman Mar 25, 2014 at 00:10:40 (UTC)
Goto Top
Hallo DerWoWusste,

ja, getestet und passt. (Hänge ein PAUSE an Friemlers Code an, dann bleibt das Fenster geöffnet.)

Ich weiß nicht was genau du vorhast. Möglich wäre auch
@echo off &setlocal
call :changeKL 0409
start "" cmd /c "test.bat"  
>nul timeout /t 1 /nobreak
call :changeKL 0407
goto :eof


:changeKL LCID
>"%temp%\config.xml" (  
  echo ^<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"^>  
  echo   ^<gs:UserList^>
  echo     ^<gs:User UserID="Current"/^>  
  echo   ^</gs:UserList^>
  echo   ^<gs:InputPreferences^>
  echo     ^<gs:InputLanguageID Action="add" ID="%1:0000%1" Default="true"/^>  
  echo   ^</gs:InputPreferences^>
  echo ^</gs:GlobalizationServices^>
)
control intl.cpl,, /f:"%temp%\config.xml"  
del "%temp%\config.xml"  
goto :eof

wobei "test.bat" deinen Batch repräsentiert, der dann komplett mit dem US Keyboard Layout laufen würde.

Grüße
rubberman
Member: DerWoWusste
DerWoWusste Mar 25, 2014 updated at 00:50:38 (UTC)
Goto Top
Hi Rubberman.

Was ich vorhabe: Wenn der Nutzer sein Kennwort ändert, soll er das in Zukunft über ein Skript tun, das das neue Kennwort auch als Bitlocker-Kennwort setzt. Da Bitlocker jedoch in der Preboot-Authentifizierung zwingend im en-us-Keyboard-Layout läuft, bekommen User, die z.B. y,z oder / in Ihrem Kennwort haben, nicht das korrekte Kennwort bei Bitlocker eingesetzt. Beispiel:
Gewünschtes Kennwort wird eingegeben:"qwertz" ->Skript setzt win-Kennwort auf qwertz, aber BL-Kennwort auf qwerty.

Füge ich bei friemlers Skript pause hinzu, kommt keinesfalls nach Eingabe von y ein z.

Ich könnte jetzt den gesamten Plan hier offenlegen, aber zögere noch, da es zum Testen gewisse Randumstände erfordert (windows 8, Bitlocker-Policies, Powershell-Policies, geplante Tasks usw.).

Mein Skript arbeitet mit der passwd.exe (Kommandozeilenpasswortchanger von Alexander Frink, Uni Mainz) bzw. mit folgenden Powershell-Befehlen:
$newpw = ConvertTo-SecureString -Force -AsPlainText $args[1] 
Add-BitLockerKeyProtector c: -PasswordProtector -password $newpw
An das PS-Skript soll als Argument das Kennwort übergeben werden, was soweit auch läuft, nur leider noch von qwertz auf qwerty umgemünzt werden muss.
Member: rubberman
Solution rubberman Mar 25, 2014, updated at Mar 31, 2014 at 21:23:43 (UTC)
Goto Top
Hallo DWW.

Soweit ich weiß hat M$ das Verhalten unter Win8 geändert (habe hier auf Win7 getestet).
Kürzlich bin ich darüber gestolpert, als ich die WinAPI LoadKeyboardLayout nachgeschlagen habe (die hier wahrscheinlich im Background aufgerufen wird):
Prior to Windows 8: Several input locale identifiers can be loaded at a time, but only one per process is active at a time. Loading multiple input locale identifiers makes it possible to rapidly switch between them.

Beginning in Windows 8: The input locale identifier is loaded for the entire system. This function has no effect if the current process does not own the window with keyboard focus.
Leider habe ich momentan keine Möglichkeit auf Win8 zu testen.

Grüße
rubberman
Member: DerWoWusste
DerWoWusste Mar 26, 2014 at 15:33:57 (UTC)
Goto Top
Hallo Ihr zwei.

Ich versuche jetzt, es über Powershell und den Befehl
Set-WinUserLanguageList -LanguageList en-us -force
zu lösen.
Member: Friemler
Friemler Mar 26, 2014 at 16:58:11 (UTC)
Goto Top
Hallo DWW,

dann mal viel Erfolg. In Ermangelung eines Win8/Win8.1 Systems kann auch ich mich nicht mehr an der Suche nach einer Problemlösung beteiligen. Das Ergebnis Deiner Bemühungen würde mich aber schon interessieren.

Gruß
Friemler
Member: rubberman
rubberman Mar 26, 2014 at 19:56:55 (UTC)
Goto Top
Hallo.

Da muss ich mich anschließen. Laut TechNet gibt's unter Win8 noch ein Set-WinDefaultInputMethodOverride Cmdlet, aber testen kann ich da aus benannten Gründen leider auch nichts ...

Grüße
rubberman
Member: pieh-ejdsch
Solution pieh-ejdsch Mar 26, 2014, updated at Apr 09, 2014 at 06:43:56 (UTC)
Goto Top
Moin,

Ich weis nicht ob es in die richtige Richtung geht . Der Input wird abgegriffen und notwendigerweise wie beim us-Keyboard eingegeben angezeigt.

Ein Kleiner Bug ist noch beim Backspace dabei.
Der vorwertige Anführstrich geht noch nicht.
Vielleicht bekommt es jemand hin.
ist gefixt

Die Taste [<|>] ganz Links ist abgestellt lässt sich aber anders zuweisen.

@echo off
if "%~1" equ "/?" (  
 echo Eingabe im DE Tastaturlayout - Ausgabe von DE und EN Tastaturlayout &echo( 
 <nul set/p"=%~n0 "&echo [Dateiname]  
echo(&echo( Dateiname	Ausgabe wird auch in Datei angefuegt.&echo(
echo(Unterstuetzt Zeichen loeschen
exit /b
)
setlocal disabledelayedexpansion
title lese Keyboard ein ...
 rem :initVarout  _ # $ . \
chcp 1252 >nul
call :ini_List :: _ # $ .
chcp 858 >nul

:initVars
set "OutxT=3"  
set "Input="  
set /a n =0

:initXinput
for /f "eol=1tokens=%OutxT%" %%i in (' echo^( ^|xcopy /Liwyq "%~f0" "%temp%\Output-fuer-nichts-tmp\" ') do set /a "OutxT+=1" &goto :initXinput  

:initVarout <CR> <BS> _ # $ . 
setlocal enabledelayedexpansion
for /f %%+ in ('copy /Z "%~dpf0" nul') do (rem CR  
 for /f %%- in ('"prompt;$h&for %%i in (1) do rem"') do (rem BackSpace  
  for /f "delims=" %%_ in ("%L__A%%L__B%") do (  
   for /f "delims=" %%# in ("%L_#A%%L_#B%") do (  
    for /f "delims=" %%$ in ("%L_$A%%L_$B%") do (  
     for /f "delims=" %%. in ("%L_.A%%L_.B%") do (  
      echo Eingabe ...
      endlocal
      title Erwarte Eingabe ...
      call :Xinput %L__N% %L_#N% %L_$N% %L_.N%
))))))

chcp 1252 >nul
setlocal enabledelayedexpansion
if "%~1" neq "" >>%1 echo EN: !InputEN! DE: !InputDE!  
chcp 850 >nul
for /f eol^=^

^ delims^= %%A in ("!InputEN!") do (  
 for /f eol^=^

^ delims^= %%B in ("!InputDE!") do (  
  endlocal
  echo( DE: %%B
  echo( EN: %%A
))
exit /b

 rem (title) - exit /b 0 - ERRORLEVEL 0
 rem (call)  - exit /b 1 - ERRORLEVEL 1
:Xinput
(set "out="  
 set "in="  
 for /f "eol=1tokens=%OutxT% delims= " %%A in (' xcopy /Liwyq "%~f0" "%temp%\Output-fuer-nichts-tmp\" ') do (  
  if %%- equ %%A set "out=del"  
  if not defined out (if %%+ equ %%A exit /b
  set "In=%%A"  
   for /f eol^=^

^ delims^=%alphanum%%sonder%%multi%^	 %%B in ("%%A") do call :xChange %*  
  ) || (set "out=%%A" &set "in=%%A")  
 )
) || (set "out= " &set "in= ")  
if ^%in%  equ ^& if not defined pre set "outpre=^" &set "multi=" &set "pre=&" &goto :Xinput  
set "multi=euioaEUIOA"  
setlocal enabledelayedexpansion
if !out! neq del goto :readinput
if not defined InputEN endlocal &set "InputDE=" &goto :Xinput  
cls
:delete
set "inputDE+="  
 (for /f eol^=^%inputEN:~-1%delims^=%delDach% %%i in ("!inputEN:~-1!.") do set "InputDE=!InputDE:~0,-1!" &:: DE-e  
)||(for /f eol^=^%inputDE:~-1%delims^=%delAkzent% %%i in ("!inputDE:~-1!.") do set "InputDE+=ï" & :: DE+´  
)||(for /f eol^=^%inputDE:~-1%delims^=%delGravis% %%i in ("!inputDE:~-1!.") do set "InputDE+=`" & :: DE+`  
)
set "InputDE=!InputDE:~,-1!!InputDE+!"  
(for /f eol^=^

^ delims^= %%A in ("!InputDE!") do (  
  endlocal
  echo(de: %%A
  set "InputDE=%%A"  
  (title)
 )
)||(
 endlocal
 set "InputDE="  
)
setlocal enabledelayedexpansion
set "InputEN=!InputEN:~,-1!  
(for /f eol^=^

^ delims^= %%A in ("!InputEN!") do (  
  endlocal
  set "InputEN=%%A"  
  echo(en: %%A
  (title)
 )
)||(
 echo(de: 
 echo(Erwarte Eingabe ...
 endlocal
 set "InputDE="  
 set "InputEN="  
 title Erwarte Eingabe ...
)
goto :Xinput 

:readinput
cls
(for /f eol^=^

^ delims^= %%A in ("!InputDE!!pre!!in!") do (  
 for /f eol^=^

^ delims^= %%B in ("!InputEN!!outpre!!out!") do (  
  endlocal
  echo(de: %%A
  echo(en: %%B
  set "InputDE=%%A"  
  set "InputEN=%%B"  
  >nul 2>nul title %%A
))
) || (set "InputDE="&set "InputEN=")  
set "pre="  
set "outpre="  
goto :Xinput

:Xchange
 rem :initVarout _ # $ .
for %%@ in (.) do (
 if defined pre (
  for /f delims^=^%in%^ tokens^=1* %%x in ("%%.") do for /f "tokens=%4 delims=	" %%z in ("%%y") do set "outpre=" &set "out=%%z"  
 ) 
 for /f delims^=^%in%^ tokens^=1* %%x in ("%%_") do for /f "tokens=%1 delims=	" %%z in ("%%y") do set "out=%%z"  
 for /f delims^=^%in%^ tokens^=1* %%x in ("%%#") do for /f "tokens=%2 delims=	" %%z in ("%%y") do set "out=%%z"  
 for /f delims^=^%in%^ tokens^=1* %%x in ("%%$") do for /f "tokens=%3 delims=	" %%z in ("%%y") do set "out=%%z"  
)
if ^%out%  neq ^  exit /b 0
if not defined out title ^%in%  Nicht gefunden.&exit /b 1
set "out=" &set "in="  
exit /b 0

:ini_List {{comment_single_line_remark:4}}
 rem Erzeuge Esetzumgsliste
for /f "eol==" %%i in ('"2>nul set ."') do set "%%i="  
for /l %%i in (1 1 9) do set ".%%i=."  
:List
call :ini_de_en %1%2 L_%2
if "%3" neq "" shift /2 &goto :List  

:FullKey
set  "alphaNum=1234567890qwrtpsdfghjklxcvbnmQWRTPSDFGHJKLXCVBNM"  
set    "sonder=%%%%!$.^,"  
set     "multi=euioaEUIOA"  
set   "deldach=êûîôâÊÛÎÔÂ"  
set "delAkzent=éúíóáýÉÚÍÓÁÝ"  
set "delGravis=èùìòàÈÙÌÒÀ"  
exit /b ini_List

:ini_De_En Liste wird erstellt
set /a "%2N =0  
set "%2A="  
set "%2B="  
 rem 1252 - 3,6 ; 858 - 4,5  
for /f "tokens=1* delims=:" %%a in (' ^( set . ^& findstr /LB %1 "%~f0" ^) ^|findstr /nb :') do (  
 for /f "tokens=3,6 delims=	" %%A in ("%%b") do (  
  if %%A neq %%B if "%%A" neq " " if "%%B" neq "" (  
   set /a "%2N+=1"  
   set "%2A%%a=%%A"  
   call set "%2A=%%%2A%%	!%2A%%a!"  
   if %%A equ . (set "%2B%%a=.") else set "%2B%%a=%%B"  
   call set "%2B=%%%2B%%	!%2B%%a!"  
)))
exit /b

 rem :initVarout _ # $ .
;: Legende:
;:
;:+--Variablenzuweisung _ # $ .
;:	+--VorschaltTaste: N=Normal U=[Umschalt] G=[AltGr]
;:	|+--Keyboard Zeile: n=number-Line q=Q-Line(TAB) a=A-Line y=Y-Line
;:	| ++--Keyboard Spalte
;:	| ||	+--Keyboard QWERTZ chcp 1252
;:	| ||	|	+--CMD in cp 858
;:	| ||	|	|	+--Out QWERTY   [SPACE] --> Kein Zeichen, gleich --> Ausgabe
;:	| ||	|	|	|	+--Out Keyboard QWERTY cp 1252
;: [TAB]   [TAB] [TAB]	 [TAB]	 [TAB]
;;_					max 30 Liste 1
::_	Nn00	^	^	`	`
::_	Un00	°	ø	~	~
::_	Un01	!	!	!	!	equ 
::_	Un02	"	"	@	@ 
::_	Un03	§	õ	#	#
::_	Un04	$	$	$	$	equ
::_	Un05	%	%	%	%	equ
::_	Un06	&	&	^	^
::_	Un07	/	/	&	&
::_	Un08	(	(	*	*	
::_	Un09	)	)	(	(
::_	Un10	=	=	)	)
::_	Nn11	ß	á	-	-
::_	Un11	?	?	_	_
::_	Nn12	´	ï	=	=
::_	Un12	`	`	+	+

::_	Nq06	z	z	y	y
::_	Uq06	Z	Z	Y	Y
::_	Nq11	ü		[	[
::_	Uq11	Ü	š	{	{
::_	Nq12	+	+	]	]
::_	Uq12	*	*	}	}

::_	Aq01	@	@	 	 	empty
::_	An02	²	ý	 	 	empty
::_	An03	³	ü	 	 	empty
::_	An07	{	{	 	 	empty
::_	An08	[	[ 	 	 	empty
::_	An09	]	]	 	 	empty
::_	An10	}	}	 	 	empty
::_	An11	\	\	 	 	empty

::_	Aq01	€	Õ	 	 	empty
::_	Aq12	~	~	 	 	empty

::_	Ay07	µ	æ	 	 	empty
::_	..	.	.	 	 	Listende

;;#					max 30 Liste 2
::#	Na10	ö	”	;	;
::#	Ua10	Ö	™	:	:
::#	Na11	ä	„	'	' 
::#	Ua11	Ä	Ž	"	" 
::#	Na12	#	#	\	\
::#	Ua12	'	'	|	| 

::#	Ny00	<	<	 	 	empty
::#	Uy00	>	>	 	 	empty
::#	Ay00	|	|	 	 	empty
::#	Ny01	y	y	z	z
::#	Uy01	Y	Y	Z	Z
::#	..	.	.	 	 
::#	Uy08	;	;	<	<
::#	Uy09	:	:	>	>
::#	Ny10	-	-	/	/
::#	Uy10	_	_	?	?

;:$					max 30 Liste 2 -aczent
::#	^N	ê	ˆ	Š	è	
::#	^N	û	–	—	ù
::#	..	.	.	 	 	Listende

::$	^N	î	Œ		ì
::$	^N	ô	“	•	ò
::$	^N	â	ƒ	…	à
 
::$	´N	é	‚	=e	=e
::$	´N	ú	£	=u	=u
::$	´N	í	¡	=i	=i
::$	´N	ó	¢	=o	=o
::$	´N	á	 	=a	=a
::$	´N	ý	ì	=z	=z

::$	`N	è	Š	+e	+e
::$	`N	ù	—	+u	+u
::$	`N	ì		+i	+i
::$	`N	ò	•	+o	+o
::$	`N	à	…	+a	+a


::$	^U	Ê	Ò	Ô	È
::$	^U	Û	ê	ë	Ù
::$	^U	Î	×	Þ	Ì
::$	^U	Ô	â	ã	Ò
::$	^U	Â	¶	·	À

::$	´U	É		=E	=E
::$	´U	Ú	é	=U	=U
::$	´U	Ó	à	=O	=O
::$	´U	Í	Ö	=I	=I
::$	´U	Á	µ	=A	=A
::$	´U	Ý	í	=Z	=Z
 
::$	`U	È	Ô	+E	+E
::$	`U	Ù	ë	+U	+U
::$	`U	Ì	Þ	+I	+I
::$	`U	Ò	ã	+O	+O
::$	`U	À	·	+A	+A
::$	..	.	.	 	 	Listende

;;.					max 30 Liste 3 pre
::.	+&	e	e	ˆ	ê
::.	+&	u	u	–	û
::.	+&	i	i	Œ	î
::.	+&	o	o	“	ô
::.	+&	a	a	ƒ	â
::.	+&	E	E	Ò	Ê
::.	+&	U	U	ê	Û
::.	+&	I	I	×	Î
::.	+&	O	O	â	Ô
::.	+&	A	A	¶	Â
::.	..	.	.	 	 	Listende

Gruß Phil
Member: Friemler
Friemler Mar 27, 2014 at 08:43:44 (UTC)
Goto Top
Quasi ein Tastaturtreiber in Batchscript - ich liebe dieses Forum! face-smile
Member: DerWoWusste
DerWoWusste Mar 27, 2014 at 09:03:32 (UTC)
Goto Top
Hallo Phil!

Oha, ein Monster... hast Du das auf win8 gestestet?
Mach ich nachher mal.
Member: pieh-ejdsch
pieh-ejdsch Mar 27, 2014 updated at 09:50:22 (UTC)
Goto Top
Moin DWW,

ich habe es zuhause auf dem Surface RT mit 8.1 x64 entwickelt und getestet.
Auf 7 x64 lüppt es auch.

Gruß Phil
Member: DerWoWusste
DerWoWusste Mar 27, 2014 at 14:18:29 (UTC)
Goto Top
Nicht schlecht face-smile face-smile
ein paar Kinken habe ich jedoch noch gefunden:
Ä soll zu " werden, wird jedoch zu *
@ soll zu nix werden, bleibt jedoch @
€ soll zu nix werden, wird jedoch zu _
Ebenso nicht abgebildet werden sollten {} und \
all diese werden bei Deinem Skript auf sich selbst abgebildet.

Könntest Du das noch beheben? Und dann noch einen Sonderwunsch: könntest Du die Ausgabe einmal im deutschen Tastaturlayout und einmal im englischen an eine Datei anhängen?
Also nach Eingabe von zum Beispiel Äu&bgt1 an die Textdatei Ausgabe.txt einmal Äu&bgt1 und dahinter "u^bgt1 anhängen?

Das wäre mir als minderbegabtem Skripter jetzt leider schon zu hoch.
Member: DerWoWusste
DerWoWusste Mar 31, 2014 at 21:23:14 (UTC)
Goto Top
$OldList = Get-WinUserLanguageList
Set-WinUserLanguageList -LanguageList en-us –force
...irgendeininputabgreifenhier...
Set-WinUserLanguageList $OldList -force
Das funktioniert gut.

Man kann natürlich auch nur mit Substitutionen arbeiten, also die Sprache gar nicht umstellen.

Ich danke Euch für die Anregungen.
Member: pieh-ejdsch
pieh-ejdsch Apr 04, 2014 at 05:53:26 (UTC)
Goto Top
Moin,

Schön wenn es nun geht.

Ich hab das Monster noch etwas angefüttert.
Das Verhalten der Englischen Tastatur wird komplett über CMD nachgestellt.
Die [AltGr] Tasten werden ausgelassen.
Akut, Gratis, Zirkumflex sowie verbundene Buchstaben werden unterstützt.

Das € (Eurosymbol) gibt es indirekt über den Umweg der Codepage 858.

Gruß Phil
Member: DerWoWusste
DerWoWusste Apr 05, 2014 at 14:31:21 (UTC)
Goto Top
Hi Phil.

Danke, aber das liefert bei mir keinen Output, nur zwei leere Zeilen en: und de:
Hast Du es auf win8.1 getestet (falls das OS eine Rolle spielt)?
Member: pieh-ejdsch
pieh-ejdsch Apr 08, 2014 updated at 15:36:19 (UTC)
Goto Top
Moin DWW,

Gruß an Frank seine Forumsoftware oder IE11.

Die Website hat zwei ... drei Sonderzeichen anders dargestellt.
Ich hab das erstellen der Ersetzungsvariablen für die Tastatur auf Codepage 1252 umgestellt, damit die Fehlerhaften Zeichen über Codepage 850/858 hier nicht auf der Website ins Gewicht fallen.

Ich hab den Code testahlber gleich nochmal vom Browser ins CMD kopiert. Nun sollte es ohne Fehler funktionieren.

Auf 8.1 geht es.

Zu starten mit:
Input.cmd Augabedatei.txt
Die Ausgabedatei ist Optional

Gruß Phil
Member: DerWoWusste
DerWoWusste Apr 08, 2014 at 16:57:07 (UTC)
Goto Top
Hm. Keine Veränderung. Lasse mir den Quelltext anzeigen und kopiere ihn, gleiches Resultat mit Chrome und IE11.