串联;更改“;vbscript中的输出

串联;更改“;vbscript中的输出,vbscript,Vbscript,我有一个vbscript的“问题”。我检查cd是否加载了以下代码: On Error Resume Next Computer = "." Set OutFile = CreateObject("WScript.Shell") Const ForAppending = 2 Set FileSystem = CreateObject("Scripting.FileSystemObject") Set WMIService = GetObject("winmgmts:\\" & Comput

我有一个vbscript的“问题”。我检查cd是否加载了以下代码:

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”

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

WScript.Echo SubItems.MediaLoaded
返回-1

有人知道我怎样才能得到“驱动力:-1”


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

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

WScript.Echo "Drive: " & CInt(SubItems.MediaLoaded)
根据所述,.MediaLoaded的类型为布尔型

媒体加载

Data type: boolean
Access type: Read-only

If True, a CD-ROM is in the drive.
连接运算符&正确处理VBScript的(子)类型:

>> bTrue = True
>> bFalse = False
>> n0 = 0
>> nM1 = -1
>> WScript.Echo "&" & bTrue & bFalse & n0 & nM1
>>
&TrueFalse0-1
WScript.Echo的内部字符串生成器组件不:

>> WScript.Echo ".Echo ,", bTrue, bFalse, n0, nM1
>>
.Echo , -1 0 0 -1
运算符可能在内部调用CStr():

>> WScript.Echo "CStr() ,", CStr(bTrue), CStr(bFalse), CStr(n0), CStr(nM1)
>>
CStr() , True False 0 -1
Join函数也很勤奋:

>> WScript.Echo "Join", Join(Array(bTrue, bFalse, n0, nM1))
>>
Join True False 0 -1
当然,您有权让您的输出看起来像

DRIVE: 0
DRIVE: -1
而不是:

MediaLoaded: False
MediaLoaded: True

但是指责勤奋的人改变任何事情是不公平的。

我的英语不好,我认为Ekkehard Horner的解释比我的好。我所知道的是,字符串串联将
Boolean
数据类型转换为文本形式

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

WScript.Echo“DRIVE:&str(SubItems.MediaLoaded)感谢您的回复,它没有帮助,但它给了我一些解决问题的线索。我使用cint(SubItems.MediaLoaded)来实现,没有涉及任何字符串:-0.49correct/+1,但我更喜欢“&以文本形式显示布尔值”而不是“turns”。什么都没有改变。