在批处理脚本中获取VBScript输出结果并在其他位置使用它

时间:2011-08-13 05:37:50

标签: vbscript spring-batch

我有一个VBScript列出了驱动器的字母。我想在批处理脚本中获取驱动器的字母并在某处使用它。例如,认为VBScript的输出是“C:\; D:\; F:\”,然后我想告诉批处理脚本获取此信息从中删除C:\并写入D:\; F:\ in a文本文件。我想只通过批处理脚本来完成它。

以下是一个VBScript示例:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery _
    ("Select * from Win32_LogicalDisk")

drives = ""
For Each objDisk in colDisks
  if drives > "" then
    drives = drives & chr(13)
  end if
  drives = drives & objDisk.DeviceID & "\"
Next

那怎么做? 谢谢, Majid Pasha

1 个答案:

答案 0 :(得分:0)

不确定这是否适合您,但您可以从vb脚本执行批处理文件并将驱动器列表作为参数传递。

示例VB Sript:

dim sh
dim drives
drives = "C:\;D:\;F:\"
set sh = CreateObject("wscript.shell")
sh.run "test.bat " & Chr(34) & drives & Chr(34)

您可以通过将文件test.bat创建为:

来测试它
@echo off
echo %1
pause

否则,如果它必须是启动它的批处理文件,您可以使用Start命令启动vb脚本,但不确定如何将值返回到批处理文件,这是我唯一的方法现在可以想到的是vb脚本使用FileSystemObject(FSO)将驱动器写入文件,然后您可以使用类似于的代码在批处理文件中读取它:

start c:\test.vbs 
set /p drives= < test.txt
echo %drives%
pause

我链接到FSO的文档包含一个非常简单的示例,用于写入文本文件。