将变量从Batch传递到VBS

时间:2014-01-09 06:49:58

标签: variables batch-file parameters vbscript

您好我正在尝试将用户输入变量从BAT传递到VBS脚本

我确定这可以在VBS中完成,但用户“文件名”输入也会在以后的BAT文件中使用

正如您所看到的,.bat部分中的“FileName”变量需要传递到文件路径的VBS脚本中(“C:\ Users \ bob \ Documents \ %FILENAME%“

.BAT

set /p FileName= Enter Filename Including Extention e.g. test.xlsx

VBS:

Set xlObj = CreateObject("Excel.Application")
Set xlFile = xlObj.WorkBooks.Open("C:\Users\xxx\Documents\%FileName%")
'turn off screen alerts
xlObj.Application.DisplayAlerts = False
'loop through sheets
For Each Worksheet In xlFile.Worksheets 
'change sheet to desired worksheet name
If Worksheet.Name = "Old111" Then
Worksheet.Name = "NewName111"
End if
Next
'save, close, then quit
xlFile.Close True
xlObj.Quit

3 个答案:

答案 0 :(得分:4)

我不建议通过环境变量将信息从一个脚本传递到另一个脚本。我想你是从批处理脚本运行VBScript的?在这种情况下,您可以简单地将文件名作为参数传递给VBScript:

set /p "FileName= Enter Filename Including Extention (e.g. test.xlsx): "
cscript.exe //NoLogo C:\path\to\your.vbs "%FileName%"

在VBScript中,您可以像这样处理参数:

filename = WScript.Arguments.Unnamed(0)

您还可以使用名称参数:

set /p "FileName= Enter Filename Including Extention (e.g. test.xlsx): "
cscript.exe //NoLogo C:\path\to\your.vbs /filename:"%FileName%"

你的VBScript中的参数评估看起来像这样:

filename = WScript.Arguments.Named("filename")

答案 1 :(得分:0)

几乎所有事情都可以用vbs完成。你不需要批次

从vbs获取用户输入,您可以使用stdin。从here复制。

' Read a single line into a variable
Dim strMyName
WScript.StdOut.Write("Enter Your full Name>")
WScript.StdIn.Read(0)
strMyName = WScript.StdIn.ReadLine()
WScript.StdOut.Write(strMyName)

答案 2 :(得分:0)

WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%FileName%")