您好我正在尝试将用户输入变量从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
答案 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%")