Board logo

标题: [已结]下面的代码如何在4DOS下运用啊? [打印本页]

作者: austion     时间: 2008-11-25 18:30    标题: [已结]下面的代码如何在4DOS下运用啊?

在4DOS下下面的都不能像以前在DOS下那样显示正常了。

:789
cls
call w.bat box (+white on red) @123456.bat:123
if errorlevel 100 goto exit
if "%?%"=="2" goto boot
if "%?%"=="1" goto 456
:123 " Sorry! " [x]

              失败!
  ~%mob_i%~
  %echo1%

  %echo2%
  
  %echo3%

        [ 详情(&L)]       [ 重启(&R) ]

::



请问我该如何的去弄呢?


当中里面已经有WBAT.INI、WBAT.COM、W.BAT文件了。
W.BAT代码如下:

WBAT $W %1 %2 %3 %4 %5 %6 %7 %8 %9
set WBAT=
set ?=

我该怎么弄这在4DOS下才能正常显示呢?

[ Last edited by austion on 2008-11-26 at 16:18 ]
作者: DOSforever     时间: 2008-11-25 19:15
建议你在 4DOS 下重写
作者: austion     时间: 2008-11-25 19:48
我不懂得如何的重写这个啊!
我本来就不懂这个显示的原理是什么。
作者: austion     时间: 2008-11-25 20:14
我觉得很奇怪啊,在4DOS里的FOR中好像使用 %%i 的不一定能行,使用 %i 还真可以啊。
作者: DOSforever     时间: 2008-11-25 20:49
要看你哪里用百分号,4DOS 中 FOR 命令用的变量参数 % 和 %% 不论是在命令行中还是在批处理文件中都是可以的,常规的 % 和 %% 用法和 COMMAND 下一样。
作者: austion     时间: 2008-11-25 21:47
DOSforever可以帮忙看看1楼的代码怎样改才可以在4DOS下运行跟在DOS下运行的一样。或者有什么办法实现这个?这个其实跟里面的帮助的显示是一样的,只是我不会。
谢谢!

[ Last edited by austion on 2008-11-25 at 21:48 ]
作者: DOSforever     时间: 2008-11-25 21:51
哎哟——你就这一段我怎么看得懂你要干什么哟,而且 WBAT 我也从来没用过。
作者: austion     时间: 2008-11-25 22:17
@echo off
x:
cd\
call tway.bat
call mouse.bat

在1楼的代码前就是上面的这些代码了,

当中的TWAY.BAT就是:
@echo off
tw.exe /np /nm /nw >nul
cls
当中的mouse.bat就是:
@echo off
ctmouse >nul
cls

上面的TW.EXE就是一个显示汉字的,CTmouse.EXE就是鼠标的。这两个应该都不少人用。
作者: austion     时间: 2008-11-25 22:18
没有代码,你也可以教一下我,你是如何显示菜单的。谢谢!
作者: austion     时间: 2008-11-25 22:36
无意中找到一份由本盟网友提供的一份资料:
READ4DOS.TXT
里面的内容是:


>>>>>   Read this if you use 4DOS or NDOS


    Make WBAT batches 4DOS compatible
    ---------------------------------

1.  4DOS has an unexpected behaviour when parentheses are used in
    the arguments of a CALL statement. A special 4DOS token in the
    file W.BAT will fix this problem:

    Please change (the first line of) the file W.BAT to: WBAT $W %&
                                               -----     ----------

2.  If WBAT is supposed to run under 4DOS as well as MS-DOS, modify
    W.BAT as follows:

    @if "%@eval[2+2]%" == "4" WBAT $W %&
    @if not "%@eval[2+2]%" == "4" WBAT $W %1 %2 %3 %4 %5 %6 %7 %8 %9

    Note: These two lines will remain untouched, because WBAT will start
    writing the SET instructions in the first line that does not begin
    with an @-sign.


3.  Remember known 4DOS issues: %+ and %=

    Avoid a plus sign immediately following a variable, like: %pos%+1,
    because "%+" seems to have higer priority under 4DOS.
    Solution: insert blank space, e.g. %pos% +1 (MS-DOS compatible),
    or ommit the second %-sign.

    The same applies to "%=", e.g. SET %name%=something. Solution ??
***


只可惜我的英文能力有限,有不少地方理解不了。
作者: austion     时间: 2008-11-25 22:45
看了上面,我才了解到一点,难怪我使用set %123%=等的时候都得不到我想要的东西,原来是%=有高执行权,需要在这两个号中加入空格。
作者: austion     时间: 2008-11-25 23:01
谜底解开了,W.BAT代码如下:

WBAT $W %1 %2 %3 %4 %5 %6 %7 %8 %9
set WBAT=
set ?=

把这个代码改为如下:

WBAT $W %&
set WBAT=
set ?=

就可以用了。
作者: austion     时间: 2008-11-25 23:02
谜底虽然解开,但是我对上面的:
2.  If WBAT is supposed to run under 4DOS as well as MS-DOS, modify
    W.BAT as follows:

    @if "%@eval[2+2]%" == "4" WBAT $W %&
    @if not "%@eval[2+2]%" == "4" WBAT $W %1 %2 %3 %4 %5 %6 %7 %8 %9

    Note: These two lines will remain untouched, because WBAT will start
    writing the SET instructions in the first line that does not begin
    with an @-sign.

不太了解,熟悉4DOS的朋友可以讲解一下吗?
作者: DOSforever     时间: 2008-11-25 23:14
按理说 4DOS 也可以使用 %1 %2 %3 %4 %5 %6 %7 %8 %9 这样的参数形式,为什么要改成 %& ?这是 WBAT 的要求,对 WBAT 不是很了解。
作者: austion     时间: 2008-11-25 23:37
我对4DOS也不是很了解,对于%&不懂这个代表什么。
我今天才接触4DOS。
作者: DOSforever     时间: 2008-11-25 23:45
%& 代表批处理执行时命令行后面的所有参数,也就是你在不确定有几个参数的情况下统统包括进去。
作者: austion     时间: 2008-11-26 16:18
谢谢