标题: [问题求助] vbs 怎样调用参数[已解决] [打印本页]
作者: FOR 时间: 2014-4-23 21:54 标题: vbs 怎样调用参数[已解决]
本帖最后由 FOR 于 2014-4-27 09:11 编辑
要求运行以下 cmd文件,显示出算式 (1+2)*5+2 的结果
问如何把这个算式传递给 a.vbs
a.vbs的代码怎样写?
谢谢。- @echo off
- setlocal enabledelayedexpansion
- set str=(1+2)*5+2
- for /f "tokens=1* delims==" %%i in ('cscript /nologo a.vbs') do (
- echo %%i
- )
- echo.
- pause>nul
复制代码
我这样写的话就会每运行一次,就要重新创建一个a.vbs文件,而我不想反复创建vbs文件- set str=(1+2)*5+2
- >c:\a.vbs echo WScript.Echo a ^& " = " ^& FormatNumber(eval(!str!),,-1)
- for /f "tokens=2 delims= " %%i in ('cscript /nologo c:\a.vbs') do (
- echo !str! = %%i
- )
复制代码
作者: wankoilz 时间: 2014-4-23 22:32
参考下这种形式的写法:- ' 2>nul 3>nul&@echo off&setlocal enabledelayedexpansion&cls
- '&set str=(1+2)*5+2
- WScript.Echo FormatNumber(eval(wscript.arguments(0)),,-1)
- '&for /f "delims=" %%i in ('cscript /nologo /e:vbscript %0 "!str!"') do echo !str! = %%i
- '&pause
复制代码
作者: PowerShell 时间: 2014-4-24 00:19
太tm麻烦了!我学powershell某种程度上就是为了避免,这种【2语言来回镶嵌,还要相互调用,的让人头晕目眩,烟花缭乱】谋杀我脑细胞的惨案。
powershell代码=简单,直观,明了- {你想怎么格式化这个数据} -f (1+2)*5+2
复制代码
作者: DAIC 时间: 2014-4-24 13:01
我这样写的话就会每运行一次,就要重新创建一个a.vbs文件,而我不想反复创建vbs文件
在创建之前,先判断a.vbs是否存在。
作者: FOR 时间: 2014-4-24 21:12
re wankoilz
谢谢回复
这只是我代码的一部分,这种混编的方式也麻烦,也影响美观,并且不利于维护。
re PowerShell
谢谢回复
重新学一门语言,需要时间,尽管它和cmd很近,可要熟悉且掌握仍需投入大量的时间和精力,这正是我缺少的。
re DAIC
谢谢回复
问题不在文件是否存在上,而是没办法让a.vbs接受我的cmd算式
作者: DAIC 时间: 2014-4-24 21:27
回复 5# FOR
BAT把算式作为一个参数传递给VBS,在VBS里面用WScript.Arguments(0)接受传入的参数。
作者: CrLf 时间: 2014-4-24 23:22
js 与 bat 的契合度更好:- @set @n=0/*
- @echo off
- for /f "delims=" %%a in ('cscript /nologo /e:javascript "%~0" "(1+2)*5+2"') do echo 结果为 %%a
- pause&exit
- */
- WScript.Echo(eval(WScript.Arguments(0)))
复制代码
因为是自用的脚本,所以可以放心用 eval
作者: FOR 时间: 2014-4-25 23:09
回复 6# DAIC
求详细代码,谢谢!
作者: FOR 时间: 2014-4-25 23:20
可以了,哈哈,谢谢大家
最后在请问个问题,这个vbs如何设置小数位数?比如我想要保留5位小数。。- @echo off&setlocal enabledelayedexpansion
- set str=1.23+5.8*8.2*5
- for /f "delims=" %%i in ('cscript /nologo tmptmp.vbs !str!') do (
- echo %%i
- )
- pause
复制代码
作者: PowerShell 时间: 2014-4-25 23:33
PS C:\Users\user001\desktop\powershell> 1.23+5.8*8.2*5
239.03
PS C:\Users\user001\desktop\powershell> "{0:N5}" -f (1.23+5.8*8.2*5)
239.03000
这其实是。net法,或者说和。net完全一样。
作者: FOR 时间: 2014-4-27 09:09
这样就可以了,嗯
问题完美解决,再次谢谢大家。- WScript.Echo a ^& " = " ^& FormatNumber(eval(!str!),5,-1)
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |