Почему мой пакетный файл не работает в Windows CE? - PullRequest
1 голос
/ 26 марта 2019

Мой сценарий не выполняется в Windows CE версии 8.

Я получаю путь к файлу от пользователя в качестве ввода, добавляю имя файла и пытаюсь его запустить.

Но @ echo off не учитывается, и все команды отображаются в консоли при запуске на устройстве. Кроме того, ни команды запуска, ни команда set /p не выполняются. Ошибка отображается

@ echo off
if exist clientshutdown3.exe (
   start clientshutdown3.exe
   start ConmanClient3.exe
   start CMAccept3.exe
   start MSVSMON.EXE
 ) else (
   set /p mypath=Enter path of pdf file: 
)

if defined mypath start "" "%mypath%\clientshutdown3.exe" 
if defined mypath start "" "%mypath%\ConmanClient3.exe" 
if defined mypath start "" "%mypath%\CMAccept3.exe" 
if defined mypath start "" "%mypath%\MSVSMON.EXE"

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Командная оболочка Windows CE не так мощна, как ее братья NT.Set / P не поддерживается в CE.

Оболочка не изменилась с v5.(https://en.wikipedia.org/wiki/Windows_Embedded_Compact)

Вот список поддерживаемых команд v5 и их параметров. http://nellisks.com/ref/dos/ce/SET.html

Вы можете легко закодировать это поведение, используя другой язык, если вам действительно нужно решить это, используяоболочка.

Удачи.

1 голос
/ 06 апреля 2019

Согласно википедии консоль в WinCE также является cmd.exe .Однако они не являются одним и тем же cmd.exe, поэтому их функциональность будет отличаться

Из списка Команды командного процессора (Windows CE 5.0) на MSDN, похоже, Windows CE cmd.exeочень примитивен и больше похож на command.com, чем cmd.exe в Windows NT.Например, не поддерживает exit /B или copy /B и так далее.Точно так же он не имеет set /P, set /A или set "with=quote" и поддерживает только

SET [variable=[string]]

Я также нашел другой подробный список Команды сценариев для устройств Windows Mobile .В этом списке команда if , как утверждается, имеет только следующие формы

if [not] errorlevel number scriptCommand 
if [not] string1==string2 command 
if [not] exist filename command 
if [not] procexists processName command

. В этом списке нет if defined.Однако документ на MSDN не согласен, поскольку в нем не указан странный бланк procexists, а IF [NOT] DEFINED variable command один

Тем не менее, оба согласны с тем, что if может 'else, поэтому ваш блок if / else тоже не будет работать.И даже если он имеет if defined, последние строки в вашем скрипте не будут работать, потому что вы использовали start "", который недоступен в WinCE.Вы должны использовать START command [parameters] вместо

В итоге вы получите проблемы с if/else, set /P и start "" (и, возможно, if defined)

...