我的脚本未在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"
答案 0 :(得分:2)
Windows CE命令外壳的功能几乎不如NT兄弟强大。 CE不支持Set / P。
自v5以来,shell尚未更改。 (https://en.wikipedia.org/wiki/Windows_Embedded_Compact)
以下是v5支持的命令及其参数的列表。 http://nellisks.com/ref/dos/ce/SET.html
如果确实需要使用Shell解决此问题,则可以轻松地使用另一种语言来编写此行为。
祝你好运。
答案 1 :(得分:1)
根据维基百科the console in WinCE is also cmd.exe。但是它们不是相同的cmd.exe,因此它们的功能会有所不同
从MSDN上的Command Processor Commands (Windows CE 5.0)列表来看,似乎Windows CE的cmd.exe非常原始,比Windows NT的cmd.exe更像command.com。例如,它是doesn't support exit /B
或copy /B
,依此类推。同样doesn't have set /P
, set /A
or set "with=quote"
,并且仅支持
SET [variable=[string]]
我还找到了Script Commands for Windows Mobile Devices的另一个详细列表。在此列表中,if
command仅具有以下形式
if [not] errorlevel number scriptCommand
if [not] string1==string2 command
if [not] exist filename command
if [not] procexists processName command
此列表中没有if defined
。但是document on 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
)的问题