联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
:: Eval.cmd - 2K/XP表达式计算批处理 :: Brglng - 2005.8.31 :: Thanks to: Will Sort modified on 2005.8.26 :: This batch file can only run in Chinese version of NT-based Windows! It cannot be run in DOS/Win9x/Me! :: And do not use COMMAND.COM instead of CMD.EXE! Command.com cannot display Chinese, and its SET command is not as powerful as that of CMD.EXE @echo off setlocal if /i "%1"=="/A" if "%2"=="" echo 必须指定文件路径!& goto end if /i not "%1"=="/A" if /i not "%1"=="/N" if not "%1"=="/?" if not "%1"=="" goto EvalArgument :EvalLogo echo ***************************************************************** echo * Eval.cmd - 2K/XP表达式计算批处理 * echo * Brglng 2005.8.31 http://brglng.ys168.com * echo * Thanks to: Will Sort modified on 2005.8.26 * echo ***************************************************************** echo. if not "%1"=="/?" echo 请输入表达式(输入"?"查看帮助, "Q"退出) & goto inputExpr :Help echo 命令行书写帮助: echo. echo %0 [表达式] [文件路径] echo 表达式 : 指定要计算的表达式 echo 文件路径 : 若指定此参数则自动将表达式和计算结果存入指定文件。 echo. echo %0 [/A 文件路径] : 普通模式下运行时总是将计算结果自动存入指定文件。 echo %0 [/N] : 普通模式下运行时只计算而不存入文件。 echo %0 [/?] : 查看命令行书写帮助 echo %0 [/? Expr] : 查看命令行书写帮助与表达式书写帮助 echo. echo 如果不使用参数则进入默认的计算模式, 每次都须输入表达式并 echo 询问是否存入文件。 if /i not "%2"=="Expr" goto end echo. pause :ExprHelp echo 表达式书写帮助: echo. echo 本表达式计算批处理能处理简单计算,不支持浮点数以及高级数学函数。 echo 它以递减的优先权顺序支持下列操作: echo. echo () - 分组 echo ! ~ - - 一元运算符 echo * / %% - 算数运算符 echo + - - 算数运算符 echo ^<^< ^>^> - 逻辑移位 echo - 按位“与” echo ^^ - 按位“异” echo ^| - 按位“或” echo = *= /= %%= += -= - 赋值 echo ^&= ^^= ^|= ^<^<= ^>^>= echo , - 表达式分隔符 echo. echo 如果在命令行下用参数计算,使用任何逻辑或取余操作符需要将表达式字符串用引号扩起来。表达式中的任何非数字字符串键作为环境变量名称,这些环境变量名称的值应在使用前定义,如果未在当前环境中定义,则默认为为零。您可以直接使用环境变量值做计算而不用键入那些 %% 符号来得到它们的值。除十六进制有 0x 前缀,八进制有 0 前缀的,数字值为十进位数字。因此, 0x12 与 18 和 022 相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。 goto end :EvalArgument set /a EvalExpr="%1" if "%EvalExpr%"=="" echo 表达式输入错误! & goto end echo %1=%EvalExpr% if "%2"=="" goto end echo %1=%EvalExpr% >>"%2" echo 算式和计算结果已存入"%2"! goto end :inputExpr set Expr= set EvalExpr= set /p Expr=^> if "%Expr%"=="" goto inputExpr if "%Expr%"=="?" call:ExprHelp & goto inputExpr if /i "%Expr%"=="Q" goto end set /a EvalExpr="%Expr%" if "%EvalExpr%"=="" echo 输入错误! & goto inputExpr echo 计算结果为:%EvalExpr% if /i "%1"=="/A" goto autosave if /i "%1"=="/N" goto inputExpr :if_save set SaveEval= set /p SaveEval=是否将表达式和计算结果存入文件[Y/N]? if /i "%SaveEval%"=="Y" goto save if /i "%SaveEval%"=="N" goto inputExpr goto if_save :save set /p SaveEvalPath=请输入文件路径及文件名(如C:\Windows\file.txt。若只输入文件名则自动存入当前文件夹,留空则为上一次输入的路径): echo "%Expr%"=%EvalExpr% >>"%SaveEvalPath%" echo 表达式以及计算结果已存入"%SaveEvalPath%"! goto inputExpr :autosave echo "%Expr%"=%EvalExpr% >>"%2" goto inputExpr :end
WScript.Echo Eval(WScript.Arguments(0))
cscript //NoLogo Eval.vbs 3.1415926*2E5 返回 628318.52
WScript.Echo Eval(WScript.StdIn.ReadLine)