首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在vbscript中连接"changes“输出

在vbscript中连接"changes“输出
EN

Stack Overflow用户
提问于 2013-05-25 00:28:21
回答 3查看 1.3K关注 0票数 0

我对vbscript有一个“问题”。我检查cd是否加载了这段代码:

代码语言:javascript
复制
On Error Resume Next
Computer = "."
Set OutFile = CreateObject("WScript.Shell")
Const ForAppending = 2
Set FileSystem = CreateObject("Scripting.FileSystemObject")
Set WMIService = GetObject("winmgmts:\\" & Computer & "\root\cimv2")
Set Items = WMIService.ExecQuery("Select * from Win32_CDROMDrive WHERE DRIVE = 'F:'",,48)
For Each SubItems in Items
WScript.Echo "DRIVE: "&SubItems.MediaLoaded
Next

它返回"DRIVE: False“

但是,如果我更改打印输出的行:

代码语言:javascript
复制
WScript.Echo SubItems.MediaLoaded

返回-1

有人知道我是怎么得到"DRIVE:-1“的吗?

多亏了madzone,我用WScript.Echo "DRIVE:"&cint(SubItems.MediaLoaded)解决了这个问题。

EN

回答 3

Stack Overflow用户

发布于 2013-05-25 05:00:12

我的英语不好,我认为埃克哈德·霍纳的解释比我的要好。我所知道的是,字符串连接将Boolean数据类型转换为文字形式。

代码语言:javascript
复制
WScript.Echo "" & False, 0, False  '>> False 0 0
WScript.Echo "" & True, -1, True   '>> True -1 -1
WScript.Echo 0 = False, 0 = True   '>> -1 0
WScript.Echo -1 = False, -1 = True '>> 0 -1
票数 1
EN

Stack Overflow用户

发布于 2013-05-25 00:46:12

使用CInt函数将字符串转换回整数。

代码语言:javascript
复制
WScript.Echo "Drive: " & CInt(SubItems.MediaLoaded)
票数 0
EN

Stack Overflow用户

发布于 2013-05-25 02:09:07

根据the docs,.MediaLoaded的类型是布尔型的

MediaLoaded

数据类型:布尔访问类型:只读如果为True,则驱动器中有CD-ROM。

连接操作符&正确处理VBScript的(sub)类型:

代码语言:javascript
复制
>> bTrue = True
>> bFalse = False
>> n0 = 0
>> nM1 = -1
>> WScript.Echo "&" & bTrue & bFalse & n0 & nM1
>>
&TrueFalse0-1

WScript.Echo的内部字符串生成器组件不:

代码语言:javascript
复制
>> WScript.Echo ".Echo ,", bTrue, bFalse, n0, nM1
>>
.Echo , -1 0 0 -1

可能&运算符在内部调用CStr():

代码语言:javascript
复制
>> WScript.Echo "CStr() ,", CStr(bTrue), CStr(bFalse), CStr(n0), CStr(nM1)
>>
CStr() , True False 0 -1

Join函数也很勤奋:

代码语言:javascript
复制
>> WScript.Echo "Join", Join(Array(bTrue, bFalse, n0, nM1))
>>
Join True False 0 -1

当然,您有权让您的输出看起来像这样

代码语言:javascript
复制
DRIVE: 0
DRIVE: -1

而不是:

代码语言:javascript
复制
MediaLoaded: False
MediaLoaded: True

但是,指责勤劳的人改变了一切是不公平的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16739629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档