Mateusz,

after 30 years, new insights into DOS batch processing.

on first sight, it seems to me that '=' is simply skipped by the
command interpreter.
testing on Windows XP (which is usually a supergroup of MSDOS)

C:>echo >test.bat echo '%1' '%2' '%3' '%4'

C:>test.bat /x=1 y=2

C:>echo '/x' '1' 'y' '2'
'/x' '1' 'y' '2'



surprise, surprise

Tom



am 28. November 2016 um 14:10 schrieben Sie:

> Hi group,

> This message can be considered both as a minor bug report and a question.
> Here's an introduction to what I tested:

> I wrote a trivial program that I called getargs, it simply prints out the
> argv list:

>   #include <stdio.h>

>   int main(int argc, char **argv) {
>     int i;
>     printf("got %d args:\n", argc);
>     for (i = 0; i < argc; i++) printf(" %d='%s'\n", i, argv[i]);
>     return(0);
>   }

> Then, I executed this program with some arbitrary parameters:

>   getargs.exe /X=5 Y=6

> on both FreeDOS and MS-DOS, it prints out things I expected, ie:

>   got 3 args:
>    0='C:\GETARGS.EXE'
>    1='/X=5'
>    2='Y=6'

> and that's all fine. But now, let me introduce a twist. Instead of 
> calling getargs.exe directly, I call it through the following batch file,
> called GETARGS.BAT:

>   @ECHO OFF
>   C:\GETARGS.EXE %1 %2 %3 %4 %5 %6 %7 %8 %9

> and I do the same test again, but this time using getargs.bat instead of
> getargs.exe.

> O FreeDOS, I get this:

>   got 4 args:
>    0='C:\GETARGS.EXE'
>    1='/X=5'
>    2='Y'
>    3='6'

> While MS-DOS 6 outputs this:

>   got 5 args:
>    0='C:\GETARGS.EXE'
>    1='/X'
>    2='5'
>    3='Y'
>    4='6'

> As you can see, there is some inconsistency between how FreeDOS processes
> this situation, and how MS-DOS treats it, this could probably be 
> considered a minor bug. But my biggest concern is about the reason both
> decide to parse '=' as a switch delimiter in the first place, when called
> through a batch file with %1 %2 %3 argument place-holders... Any idea on
> that?

> Is there anything I could do to make the batch file react exactly like if
> the exe file was launched?

> Note, that if I replace the %1 %2 variables in the batch file by actual
> arguments (/X=4 Y=5), then the result is exactly the same as when the exe
> file is executed directly, so I assume it's something strictly related to
> how %1 %2 %3... variables are processed.

> I took screenshots of my tests on both FreeDOS and MS-DOS, should this be
> useful for any purpose:
>   https://s12.postimg.org/en1mbmgal/getargs_fdos.png
>   https://s16.postimg.org/7uvvosqad/getargs_msdos.png

> best regards,
> Mateusz


> ------------------------------------------------------------------------------
> _______________________________________________
> Freedos-devel mailing list
> Freedos-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/freedos-devel



Mit freundlichen Grüßen/Kind regards
Tom Ehlert
+49-241-79886


------------------------------------------------------------------------------
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to