为什么我的批处理文件在Windows CE中不起作用?

时间:2019-03-26 09:38:54

标签: batch-file cmd scripting windows-ce

我的脚本未在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 个答案:

答案 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 /Bcopy /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/elseset /Pstart ""(可能还有if defined)的问题