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-ID: 233504

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

Ausgedruckt am: 25.11.2024 um 11:11 Uhr

pieh-ejdsch
pieh-ejdsch 24.03.2014 um 21:03:05 Uhr
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
DerWoWusste
DerWoWusste 24.03.2014 um 21:06:13 Uhr
Goto Top
Hi Phil.

Nee, mit 16-Bit-Programmen keine Chance auf x64.
Friemler
Friemler 24.03.2014 um 22:09:49 Uhr
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
DerWoWusste
DerWoWusste 24.03.2014 um 22:17:55 Uhr
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?
Friemler
Lösung Friemler 25.03.2014, aktualisiert am 31.03.2014 um 23:23:59 Uhr
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
DerWoWusste
DerWoWusste 25.03.2014 aktualisiert um 00:54:34 Uhr
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?
rubberman
rubberman 25.03.2014 um 01:10:40 Uhr
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
DerWoWusste
DerWoWusste 25.03.2014 aktualisiert um 01:50:38 Uhr
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.
rubberman
Lösung rubberman 25.03.2014, aktualisiert am 31.03.2014 um 23:23:43 Uhr
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
DerWoWusste
DerWoWusste 26.03.2014 um 16:33:57 Uhr
Goto Top
Hallo Ihr zwei.

Ich versuche jetzt, es über Powershell und den Befehl
Set-WinUserLanguageList -LanguageList en-us -force
zu lösen.
Friemler
Friemler 26.03.2014 um 17:58:11 Uhr
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
rubberman
rubberman 26.03.2014 um 20:56:55 Uhr
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
pieh-ejdsch
Lösung pieh-ejdsch 27.03.2014, aktualisiert am 09.04.2014 um 08:43:56 Uhr
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
Friemler
Friemler 27.03.2014 um 09:43:44 Uhr
Goto Top
Quasi ein Tastaturtreiber in Batchscript - ich liebe dieses Forum! face-smile
DerWoWusste
DerWoWusste 27.03.2014 um 10:03:32 Uhr
Goto Top
Hallo Phil!

Oha, ein Monster... hast Du das auf win8 gestestet?
Mach ich nachher mal.
pieh-ejdsch
pieh-ejdsch 27.03.2014 aktualisiert um 10:50:22 Uhr
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
DerWoWusste
DerWoWusste 27.03.2014 um 15:18:29 Uhr
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.
DerWoWusste
DerWoWusste 31.03.2014 um 23:23:14 Uhr
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.
pieh-ejdsch
pieh-ejdsch 04.04.2014 um 07:53:26 Uhr
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
DerWoWusste
DerWoWusste 05.04.2014 um 16:31:21 Uhr
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)?
pieh-ejdsch
pieh-ejdsch 08.04.2014 aktualisiert um 17:36:19 Uhr
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
DerWoWusste
DerWoWusste 08.04.2014 um 18:57:07 Uhr
Goto Top
Hm. Keine Veränderung. Lasse mir den Quelltext anzeigen und kopiere ihn, gleiches Resultat mit Chrome und IE11.