On 06.02.2022 23:42, Stefan Kanthak wrote:
> --- dummy.cmd ---
> If "%PROCESSOR_ARCHITECTURE%" == "AMD64" Goto :AMD64
> If "%PROCESSOR_ARCHITEW6432%" == "AMD64" Goto :WOW6432
> If "%PROCESSOR_ARCHITECTURE%" == "x86" Goto :I386
> Exit /B
>
> AMD64:
> "%SystemRoot%\System32\NARRATOR.exe" ...
> Exit /B
>
> WOW6432:
> "%SystemRoot%\SysNative\NARRATOR.exe" ...
> Exit /B
>
> I386:
> "%SystemRoot%\System32\NARRATOR.exe" ...
> Exit /B
> --- EOF ---
Hab keine Ahnung was sich Microsoft dabei gedacht hat.
Wenn dann zumindest %SystemRoot%\SysNative\ auch im 64 Bit
Mode existieren würde, dann könnte man einfach immer
"%SystemRoot%\SysNative\NARRATOR.exe" benutzen und
es würde mit beiden cmd Versionen funktionieren.
Bei einem 32 Bit cmd.exe findet ein "dir %SystemRoot%\Sys*"
gar kein SysNative aber "cd %SystemRoot%\SysNative"
funktioniert trotzdem.
> JFTR: das wirrtuelle Verzeichnis %SystemRoot%\SysNative\... gibt's
> aber erst seit knapp 20 Jahren ... siehe den MSKB-Artikel 942589
Mag sein, aber alles nach DOS 6 betrachte ich als black box
von der ich erwarte, das ich damit Anwendungsprogramme starten
kann und die ansonsten einfach funktioniert ohne mich zu
belästigen. Ein Rechner ist ein Arbeitsgerät und kein Mittel
zur Selbstbeschäftigung. Ich benutze auch ein Auto um von
A nach B zu kommen und nicht um das Motormanagementsystem zu
analysieren.
Nur wenn jetzt sogar das Starten von exe Programmen nicht
funktioniert weil Windows heimlich im Hintergrund andere
Verzeichnisinhalte vortäuscht als tatsächlich auf der
Platte gespeichert sind, dann wir es echt schlimm. Es
spricht ja nichts gegen virtuelle Verzeichnisse, aber die
realen Verzeichnisse sollten immer unter ihren richtigen
Namen erreichbar sein.
--------------------------------------------------------
Hab jetzt mal versucht in 32 Bit cmd das Programm durch
C:\WINDOWS\SysNative\Narrator.exe
auszuführen, allerdings vergeblich. Das Programm startet
anscheinend, bring dann aber die Fehlermeldung
C:\WINDOWS\SysNative\Narrator.exe
Der angegebene Pfad ist nicht vorhanden
Es will wohl auf seine eigene exe Datei zugreifen und
da es als 64 Bit Programm läuft existiert dann der
Pfad C:\WINDOWS\SysNative\ nicht mehr, obwohl es von
dort gestartet wurde.
--------------------------------------------------------
Hab jetzt eine Version die mit 64 und 32 Bit CMD funktioniert.
Die Datei spell.txt enthält Wörter die von dem BATCH
Programm einzeln angezeigt und vorgelesen werden.
@echo off
if [%1]==[] goto :l1
for /f %%i in (spell.txt) do (
echo %%i
timeout /t 4 >nul)
exit
:l1
set p=
if exist %windir%\SysNative\cmd.exe set p=%windir%\SysNative\cmd.exe /c start ""
start "" %p% /min %windir%\system32\narrator.exe
timeout /t 4 >nul
start "" "%~f0" xxx
exit