China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --

Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
DOS stands for freedom, openness and progress. Let us work hard, learn from the openness and GNU spirit of FreeDOS and Linux, and together build and grow a free GNU GPL world!

中国DOS联盟论坛
The time now is 2026-06-22 08:51
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » A batch script that can calculate simple expressions DigestI View 12,187 Replies 22
Original Poster Posted 2005-08-15 15:53 ·  中国 上海 徐汇区 电信
银牌会员
★★★
永遠的DOS~~~
Credits 1,200
Posts 466
Joined 2005-02-01 00:00
21-year member
UID 35867
Gender Male
From 上海
Status Offline
I've compiled an interesting batch script for NT-based systems like 2K/XP, which can calculate simple expressions. It's just an entry-level one, so I'm posting it here.

@echo off
echo Welcome to use the 2K/XP expression calculation batch script
echo Made by Brglng 2005.8.15
echo Download address: http://brglng.ys168.com
echo Please report bugs in time! Email:sky-0310@sohu.com
echo.
echo Note: This batch script can only be used in NT-based systems, not in Win9x/Me/DOS!
echo If using in the command line, please use "Command Prompt" in the accessories or use cmd.exe, not command.com!
echo This batch file can only be used in Chinese version of
echo Windows 2K/XP/2003...!
echo Do not use command.com instead of cmd.exe!
pause

:inputExpr
set Expr=
set EvalExpr=
echo.
echo Please enter the expression (enter "?" to view help):
set /p Expr=
if "%Expr%"=="" (
goto inputExpr
)
if "%Expr%"=="?" (
echo This expression calculation batch script is very simple and supports the following operations in decreasing order of priority:
echo ^(^) ^- Grouping
echo ^! ^~ ^- ^- Unary operators
echo ^* ^/ ^% ^- Arithmetic operators
echo ^+ ^- ^- Arithmetic operators
echo ^<^< ^>^> ^- Logical shift
echo ^- Bitwise "AND"
echo ^^ ^- Bitwise "XOR"
echo ^| ^- Bitwise "OR"
echo ^= ^*^= ^/^= ^%^= ^+^= ^-^= ^- Assignment
echo ^&^= ^^^= ^|^= ^<^<^= ^>^>^=
echo ^, ^- Expression separator
echo If you use any logical or remainder operators, you need to enclose the expression string in quotes. Any non-numeric string key in the expression is taken as an environment variable name, and the values of these environment variable names are converted to numbers before use. If an environment variable name is specified but not defined in the current environment, the value will be set to zero. This allows you to use environment variable values for calculations without typing those % symbols to get their values. Except for hexadecimal numbers with 0x prefix and octal numbers with 0 prefix, numeric values are decimal numbers. Therefore, 0x12 is the same as 18 and 022. Please note that octal formulas can be easily confused: 08 and 09 are invalid numbers because 8 and 9 are not valid octal digits.
goto inputExpr
)
set /a EvalExpr="%Expr%"
if "%EvalExpr%"=="" (
echo Input error!
goto inputExpr
)
echo The calculation result is: %EvalExpr%

:if_save
set SaveEval=
echo.
echo Do you want to save the expression and calculation result to a file ?
set /p SaveEval=
if "%SaveEval%"=="Y" goto save
if "%SaveEval%"=="y" goto save
if "%SaveEval%"=="N" goto next
if "%SaveEval%"=="n" goto next
goto if_save

:save
echo Please enter the file path and file name (such as C:\Windows\file.txt. If no path is entered, it means the current folder, leaving it blank means the last entered path):
set /p SaveEvalPath=
echo %Expr%=%EvalExpr% >>%SaveEvalPath%
echo The expression and calculation result have been saved to %SaveEvalPath%!

:next
set EvalNext=
echo 1. Continue calculation 2. Exit
set /p EvalNext=
if "%EvalNext%"=="1" goto inputExpr
if "%EvalNext%"=="2" goto end
goto next

:end
echo Thank you for using! Press any key to exit...
pause >nul
set Expr=
set EvalExpr=
set SaveEval=
set SaveEvalPath=
set EvalNext=


The latest version of this batch script can be downloaded from the "DIY" directory on my E drive.

[ Last edited by namejm on 2007-2-3 at 09:49 PM ]
32位才是DOS未来的希望
个人网志:http://sololand.moe
Floor 2 Posted 2005-08-15 18:02 ·  中国 广东 汕头 电信
初级用户
Credits 125
Posts 11
Joined 2004-01-25 00:00
22-year member
UID 16050
Gender Male
Status Offline
Not bad, collected
Floor 3 Posted 2005-08-15 19:00 ·  中国 湖北 黄冈 联通
初级用户
KMGT
Credits 143
Posts 18
Joined 2005-02-11 00:00
21-year member
UID 36105
Gender Male
Status Offline
Why not write one for Win9x/me/DOS!
坚持就是胜利!
Floor 4 Posted 2005-08-15 19:44 ·  IANA 局域网IP(Private-Use)
钻石会员
★★★★★
Credits 10,046
Posts 3,039
Joined 2002-11-11 00:00
23-year member
UID 223
Gender Male
Status Offline
Maybe only 2k/xp has ready-made expression evaluation statements.
简单就是美
Floor 5 Posted 2005-08-16 09:41 ·  中国 上海 徐汇区 电信
银牌会员
★★★
永遠的DOS~~~
Credits 1,200
Posts 466
Joined 2005-02-01 00:00
21-year member
UID 35867
Gender Male
From 上海
Status Offline
Originally posted by Michael at 2005-8-15 07:44 PM:
Maybe only 2k/xp have ready-made expression evaluation statements.

Well, that's right.
In fact, to really achieve better expression calculation, you can just use those command-line calculators. Their usage is very convenient. The /a parameter of the set command in NT also has many limitations, and the function is not strong. For example, it does not support floating-point numbers, does not support complex mathematical functions (such as sin, cos), etc. So, this batch processing is actually not very practical, and can only be used for learning. I think this batch processing has a good comprehensive application of new command switches and syntax for 2K/XP.

[ Last edited by brglng on 2005-8-16 at 10:18 ]
32位才是DOS未来的希望
个人网志:http://sololand.moe
Floor 6 Posted 2005-08-16 21:36 ·  IANA 局域网IP(Private-Use)
钻石会员
★★★★★
Credits 10,046
Posts 3,039
Joined 2002-11-11 00:00
23-year member
UID 223
Gender Male
Status Offline
I was really startled at first. I thought the expression calculation was also done by batch processing.

Writing a similar program in C++ still needs so many lines:

#include<iostream>
#include<string>
#include<map>
#include<cctype>
#include<sstream>

using namespace std;

namespace Parser
{
double prim(bool);
double term(bool);
double expr(bool);
}

namespace Lexer
{
enum Token_value
{
NAME, NUMBER, END,
PLUS='+', MINUS='-', MUL='*', DIV='/',
PRINT=';', ASSIGN='=', LP='(', RP=')'
};

Token_value curr_tok;
double number_value;
string string_value;
map<string,double>table;

Token_value get_token();
}

namespace Driver
{
int no_of_errors;
istream* input;
void skip();
void sta();
}

namespace Error
{
struct Syntax_error
{
const char* p;
Syntax_error(const char* q) {p=q;}
};
struct Zero_divide{};
}


using namespace Driver;
using namespace Parser;
using namespace Lexer;
using namespace Error;

double Parser::expr(bool get)
{
double left=term(get);
for(;;)
switch(curr_tok)
{
case PLUS:
left+=term(true);
break;
case MINUS:
left-=term(true);
break;
default:
return left;
}
}

double Parser::term(bool get)
{
double left=prim(get);
for(;;)
switch(curr_tok)
{
case MUL:
left*=prim(true);
break;
case DIV:
if(double d=prim(true))
{
left/=d;
break;
}
throw Zero_divide();
default:
return left;
}
}



double Parser::prim(bool get)
{
if (get) get_token();
switch(curr_tok)
{
case NUMBER:
{
double v=number_value;
get_token();
return v;
}
case NAME:
{
double& v=table;
if(get_token()==ASSIGN)v=expr(true);
return v;
}
case MINUS:
return -prim(true);
case LP:
{
double e=expr(true);
if(curr_tok!=RP) throw Syntax_error("')'expected");
get_token();
return e;
}


default:
throw Syntax_error("primary expected");
}

}
Token_value Lexer::get_token()
{
char ch;
do
{
if(!input->get(ch))return curr_tok=END;
}while(ch!='\n'&&isspace(ch));
switch(ch)
{
case '\n':
return curr_tok=PRINT;
case ';':
case '*':
case '/':
case '+':
case '-':
case '(':
case ')':
case '=':
return curr_tok=Token_value(ch);
case '0':case '1':case '2':case '3':case '4':
case '5':case '6':case '7':case '8':case '9':
input->putback(ch);
*input>>number_value;
return curr_tok=NUMBER;
default:
if(isalpha(ch))
{
string_value=ch;
while(input->get(ch)&&isalnum(ch))string_value.push_back(ch);
input->putback(ch);
return curr_tok=NAME;
}
throw Syntax_error("bad token");
}
}
void Driver::sta()
{
while(*input){
try
{
get_token();
if(curr_tok==END)break;
if(curr_tok==PRINT)continue;
cout<<expr(false)<<endl;
}
catch(Zero_divide)
{
cerr<<"attempt to divide by zero\n";
if(curr_tok!=PRINT)skip();
}
catch(Syntax_error e)
{
cerr<<"syntax error:"<<e.p<<endl;
if(curr_tok!=PRINT)skip();
}
}
}



void Driver::skip()
{
no_of_errors++;

while(*input)
{
char ch;
input->get(ch);

switch(ch)
{
case '\n':
case ';':
return;
}
}
}

int main(int argc, char*argv)
{
switch(argc)
{
case 1:
input=&cin;
break;
case 2:
input=new istringstream(argv);
break;
default:
cerr<<"too many arguments\n";
return 1;
}
sta();
if(input!=&cin)delete input;
return no_of_errors;
}

[ Last edited by Michael on 2005-8-16 at 21:37 ]
简单就是美
Floor 7 Posted 2005-08-17 15:46 ·  中国 上海 徐汇区 电信
银牌会员
★★★
永遠的DOS~~~
Credits 1,200
Posts 466
Joined 2005-02-01 00:00
21-year member
UID 35867
Gender Male
From 上海
Status Offline
Hehe, I've programmed one with VB.
32位才是DOS未来的希望
个人网志:http://sololand.moe
Floor 8 Posted 2005-08-19 20:31 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
Credits 4,432
Posts 1,512
Joined 2002-10-18 00:00
23-year member
UID 19
Gender Male
Status Offline
Re: brglng:

Very good code, three suggestions are put forward:

1. Add command-line parameter support, that is, allow writing expressions or /? in command-line parameters;

2. The prompt string of set /p can be written in the set statement, for example
set /p SaveEval=Do you want to save the expression and calculation result to the file ?

3. The switch /i can be used in the if statement for case-insensitive judgment, for example:
if /i "%SaveEval%"=="Y" goto save
if /i "%SaveEval%"=="N" goto next

In addition, after the code is improved, I am interested in including it in my batch processing collection post {8905} "Abnormalities in Batch Processing Programming", but due to layout restrictions, most of the explanatory document code may be deleted. I wonder if Brother brglng agrees?
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
Floor 9 Posted 2005-08-20 01:20 ·  中国 湖北 武汉 电信
新手上路
Credits 1
Posts 1
Joined 2005-08-20 01:11
20-year member
UID 41799
Status Offline
Not bad, thanks
Floor 10 Posted 2005-08-23 14:56 ·  中国 上海 徐汇区 电信
银牌会员
★★★
永遠的DOS~~~
Credits 1,200
Posts 466
Joined 2005-02-01 00:00
21-year member
UID 35867
Gender Male
From 上海
Status Offline
Originally posted by willsort at 2005-8-19 08:31 PM:
Re brglng:

Good code, three suggestions:

1. Add command-line parameter support, that is, allow writing expressions or /? in command-line parameters;

2. The prompt word of set /p...


Thanks to expert Willsort for the suggestions. Regarding inclusion, I have no opinion, anyway, it was just written casually.
32位才是DOS未来的希望
个人网志:http://sololand.moe
Floor 11 Posted 2005-08-25 11:39 ·  中国 上海 徐汇区 电信
银牌会员
★★★
永遠的DOS~~~
Credits 1,200
Posts 466
Joined 2005-02-01 00:00
21-year member
UID 35867
Gender Male
From 上海
Status Offline
Here is the translation of the provided code's relevant description part:

The following is the improved code according to the suggestions of willsort (added many functions):
@echo off
echo This simple expression calculation batch processing supports the following operations in descending priority order: >EvalExpr.hlp
echo. >>EvalExpr.hlp
echo ^(^) ^- Grouping >>EvalExpr.hlp
echo ^! ^~ ^- ^- Unary operators >>EvalExpr.hlp
echo ^* ^/ %% ^- Arithmetic operators >>EvalExpr.hlp
echo ^+ ^- ^- Arithmetic operators >>EvalExpr.hlp
echo ^<^< ^>^> ^- Logical shift >>EvalExpr.hlp
echo ^- Bitwise "AND" >>EvalExpr.hlp
echo ^^ ^- Bitwise "XOR" >>EvalExpr.hlp
echo ^| ^- Bitwise "OR" >>EvalExpr.hlp
echo ^= ^*^= ^/^= %%^= ^+^= ^-^= ^- Assignment >>EvalExpr.hlp
echo ^&^= ^^^= ^|^= ^<^<^= ^>^>^= >>EvalExpr.hlp
echo ^, ^- Expression separator >>EvalExpr.hlp
echo. >>EvalExpr.hlp
echo If you use any logical or remainder operators, you need to enclose the expression string in quotes. Any non-numeric string in the expression is taken as an environment variable name, and the value of these environment variable names is converted to a number before use. If an environment variable name is specified but not defined in the current environment, the value will be set to zero. This allows you to use environment variable values for calculations without having to type those %% symbols to get them. Numeric values are in decimal, except that hexadecimal has a 0x prefix and octal has a 0 prefix. So, 0x12 is the same as 18 and 022. Please note that octal formulas can be easily confusing: 08 and 09 are invalid numbers because 8 and 9 are not valid octal digits. >>EvalExpr.hlp
::cls

if "%1"=="" goto start
if "%1"=="/?" goto start
if /i "%1"=="/?:Expr" goto start
if /i "%1"=="/A" if "%2"=="" (
echo A file path must be specified!
goto end
)
if /i "%1"=="/A" goto start
set /a EvalExpr=%1
if "%EvalExpr%"=="" (
echo Expression input error!
goto end
)
echo %1=%EvalExpr%
if "%2"=="" goto end
echo %1=%EvalExpr% >>"%2"
echo The formula and calculation result have been stored in "%2"!
goto end

:start
if /i "%1"=="/?:Expr" more EvalExpr.hlp
if /i "%1"=="/?:Expr" goto end
echo Welcome to use the 2K/XP expression calculation batch processing
echo Made by Brglng 2005.8.25
echo Download address: http://brglng.ys168.com
echo Please report bugs in time! Email:sky-0310@sohu.com
echo.
echo Note: This batch processing can only be used in NT-based systems, not in Win9x/Me/DOS!
echo If using it on the command line, please use "Command Prompt" in Accessories or use cmd.exe, not command.com!
echo This batch file can only be used in Chinese version of Windows 2K/XP/2003...!
echo Do not use command.com instead of cmd.exe!
echo.
if not "%1"=="/?" pause
if not "%1"=="/?" goto inputExpr
echo Usage:
echo EvalExpr
echo EvalExpr
echo EvalExpr
echo EvalExpr
echo.
echo : The expression to calculate
echo : Use this parameter to store the expression and calculation result in the specified file
echo : When not using parameters for calculation, always automatically store the calculation result in the specified file
echo Note: The file path will be used as the second parameter and must be used in conjunction with the /A parameter.
echo : View this help
echo : View help on expression writing
goto end

:inputExpr
echo.
set Expr=
set EvalExpr=
set /p Expr=Please enter the expression (enter "?" to view help, "Exit" to exit):
if "%Expr%"=="" goto inputExpr
if "%Expr%"=="?" (
echo.
more EvalExpr.hlp
goto inputExpr
)
if /i "%Expr%"=="Exit" goto end
set /a EvalExpr="%Expr%"
if "%EvalExpr%"=="" (
echo Input error!
goto inputExpr
)
echo The calculation result is: %EvalExpr%
if /i "%1"=="/A" goto autosave

:if_save
set SaveEval=
echo.
set /p SaveEval=Do you want to store the expression and calculation result in a file ?
if /i "%SaveEval%"=="Y" goto save
if /i "%SaveEval%"=="N" goto inputExpr
goto if_save

:save
set /p SaveEvalPath=Please enter the file path and file name (such as C:\Windows\file.txt. If you don't enter a path, it means the current folder, leaving it blank means the last entered path):
echo "%Expr%"=%EvalExpr% >>"%SaveEvalPath%"
echo The expression and calculation result have been stored in "%SaveEvalPath%"!
goto inputExpr

:autosave
echo "%Expr%"=%EvalExpr% >>"%2"
goto inputExpr

:end
if /i "%1"=="/A" if not "%2"=="" echo All expressions and calculation results have been stored in "%2"!
del /q EvalExpr.hlp >nul 2>nul
set Expr=
set EvalExpr=
set SaveEval=
set SaveEvalPath=
set EvalNext=
32位才是DOS未来的希望
个人网志:http://sololand.moe
Floor 12 Posted 2005-08-26 00:54 ·  中国 山东 济宁 电信
中级用户
★★★
痴迷DOS者
Credits 456
Posts 570
Joined 2004-10-09 00:00
21-year member
UID 32281
Gender Male
Status Offline
It's not very difficult to compile a calculator with GW-BASIC...
This hasn't been tested
No error handling
main.bas:

10 if flag=-1 goto 80
15 input "A=",expres$
20 if expres$="" goto 90
20 open "temp.bas" for output as #1
30 print #1,"10 A=";expres$
40 print #1,"20 PRINT ";CHR$(34);expres$;"=";chr$(34);"A"
50 print #1,"30 flag=-1"
60 print #1,"40 chain ";CHR$(34);"main.bas";CHR$(34)
70 close #1
75 chain "temp.bas"
80 goto 10
90 end

It can also be done with QB7.1 (needs to be run with QBX, can't be compiled)
Has error handling
Also not tested
main.bas:
if flag=-1 goto 70
10 input "A=",expres$
if expres$="" goto 80
open "temp.bas" for output as #1
print #1,"ON ERROR RESUME NEXT
print #1,"10 A=";expres$
PRINT #1,"IF ERR>0 THEN PRINT";CHR$(34);"Error!";CHR$(34);":goto 30"
print #1,"20 PRINT ";CHR$(34);expres$;"=";chr$(34);"A"
print #1,"30 flag=-1"
print #1,"40 chain ";CHR$(34);"main.bas";CHR$(34)
close #1
chain "temp.bas"
80 goto 10
90 end


[ Last edited by defrag on 2005-8-30 at 19:41 ]
DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
Floor 13 Posted 2005-08-26 11:28 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
Credits 4,432
Posts 1,512
Joined 2002-10-18 00:00
23-year member
UID 19
Gender Male
Status Offline
Re Brglng:

Some structural changes have been made to make the program execution flow clearer, and the core code has not been changed. Please Brother Brglng do the testing. Regarding the expression usage help, I initially used the for statement to save code, but later considered the readability issue and finally discarded it. You can also test together.

:: Eval.bat - 2K/XP Expression Calculation Batch
:: Brglng - 2005.8.25
:: Modified: Will Sort - 2005.8.26
@echo off
setlocal
if /i "%1"=="/A" if "%2"=="" echo Must specify the file path!& goto end
if /i not "%1"=="/A" if not "%1"=="/?" if not "%1"=="" goto EvalArgument

:EvalLogo
cls
echo.
echo Welcome to use the 2K/XP expression calculation batch
echo Made by Brglng 2005.8.25
echo Download address: http://brglng.ys168.com
echo Please report bugs in time! Email:sky-0310@sohu.com
echo.
echo Note: This batch file can only be used in NT - class systems, not for Win9x/Me/DOS!
echo If using at the command line, please use "Command Prompt" in the accessories or use cmd.exe, not command.com!
echo This batch file can only be used in Chinese version of Windows 2K/XP/2003...!
echo Do not use command.com instead of cmd.exe!
echo.
if not "%1"=="/?" goto inputExpr

:Help
pause>nul
cls
echo Command line writing help:
echo.
echo %0
echo %0
echo %0
echo %0
echo.
echo : The expression to calculate
echo : Use this parameter to store the expression and calculation result in the specified file
echo : When not using the parameter calculation, always automatically store the calculation result in the specified file
echo Note: The file path will be used as the second parameter and must be used in conjunction with the /A parameter.
echo : View command line writing help
echo : View command line writing help and expression writing help
echo.
if /i not "%2"=="Expr" goto end
pause>nul

:ExprHelp
cls
echo Expression writing help:
echo.
::set /?> sethelp.txt
::for /f "skip=29 delims=" %%h in (sethelp.txt) do echo %%h & if "%%h"=="Because 8 and 9 are not valid octal digits." goto end
echo This expression calculation batch is very simple and supports the following operations in decreasing priority order:
echo.
echo ^(^) ^- Grouping
echo ^! ^~ ^- ^- Unary operator
echo ^* ^/ %% ^- Arithmetic operator
echo ^+ ^- ^- Arithmetic operator
echo ^<^< ^>^> ^- Logical shift
echo ^- Bitwise "AND"
echo ^^ ^- Bitwise "XOR"
echo ^| ^- Bitwise "OR"
echo ^= ^*^= ^/^= %%^= ^+^= ^-^= ^- Assignment
echo ^&^= ^^^= ^|^= ^<^<^= ^>^>^=
echo ^, ^- Expression separator
echo.
echo If you use any logical or remainder operator, you need to enclose the expression string in quotes. Any non-numeric string key in the expression is used as the environment variable name, and the value of these environment variable names is converted to a number before use. If an environment variable name is specified but not defined in the current environment, the value will be set to zero. This allows you to use environment variable values for calculations without having to type those %% symbols to get their values. Except that hexadecimal has a 0x prefix and octal has a 0 prefix, the numeric value is a decimal digit. Therefore, 0x12 is the same as 18 and 022. Please note that octal formulas can be easily confused: 08 and 09 are invalid numbers because 8 and 9 are not valid octal digits.
goto end

:EvalArgument
set /a EvalExpr=%1
if "%EvalExpr%"=="" echo Expression input error!& pause & goto ExprHelp
echo %1=%EvalExpr%
if "%2"=="" goto end
echo %1=%EvalExpr% >>"%2"
echo The formula and calculation result have been stored in "%2"!
goto end

:inputExpr
set Expr=
set EvalExpr=
set /p Expr=Please enter the expression (enter "?" to view help, "Q" to exit):
if "%Expr%"=="" goto inputExpr
if "%Expr%"=="?" call:ExprHelp & goto inputExpr
if /i "%Expr%"=="Q" goto end
set /a EvalExpr="%Expr%"
if "%EvalExpr%"=="" echo Input error!& goto inputExpr
echo The calculation result is: %EvalExpr%
if /i "%1"=="/A" goto autosave

:if_save
set SaveEval=
echo.
set /p SaveEval=Do you want to store the expression and calculation result in a file ?
if /i "%SaveEval%"=="Y" goto save
if /i "%SaveEval%"=="N" goto inputExpr
goto if_save

:save
set /p SaveEvalPath=Please enter the file path and file name (such as C:\Windows\file.txt. If no path is entered, it means the current folder, leaving it blank is the last input path):
echo "%Expr%"=%EvalExpr% >>"%SaveEvalPath%"
echo The expression and calculation result have been stored in "%SaveEvalPath%"!
goto inputExpr

:autosave
echo "%Expr%"=%EvalExpr% >>"%2"
goto inputExpr

:end


[ Last edited by willsort on 2005-9-11 at 13:19 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
Floor 14 Posted 2005-08-26 15:01 ·  中国 广东 汕头 电信
银牌会员
★★★
Credits 1,451
Posts 446
Joined 2002-10-20 00:00
23-year member
UID 29
Gender Male
Status Offline
A few friends who wrote in other languages, can they compile into exe and upload casually?
Floor 15 Posted 2005-08-27 16:43 ·  中国 山东 济宁 电信
中级用户
★★★
痴迷DOS者
Credits 456
Posts 570
Joined 2004-10-09 00:00
21-year member
UID 32281
Gender Male
Status Offline
Said, mine can only run in the IDE (urgently become the development environment)...
DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
Forum Jump: