VBScript代码,实现将字符串变量 Addr1传递给 senddat.vbs
,您可以通过命令行参数的方式传递。以下是具体优化方案:
主脚本修改如下:
Set WshShell = CreateObject("WScript.Shell")
Dim Addr1
Addr1 = "192.168.1.100" ' 替换为实际值(带空格的文本也安全)
' 关键优化:通过命令行参数传递变量,用双引号包裹确保空格安全
WshShell.Run "senddat.vbs " & Chr(34) & Addr1 & Chr(34), 0, False
在 `senddat.vbs` 中接收参数:
```vbs
If WScript.Arguments.Count > 0 Then
' 读取第一个命令行参数
Addr1 = WScript.Arguments(0)
Else
Addr1 = ""
MsgBox "错误:未接收到参数!", vbCritical
End If
' 示例:打印接收到的值(实际使用时替换为您的逻辑)
MsgBox "接收到的地址:" & Addr1, vbInformation
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd /c echo 发送数据到 " & Addr1, 0
关键说明:
1. 安全传递参数
`Chr(34)` 表示双引号 `"`,确保带空格的字符串也能正确传递(如 `"192.168.1.100"`)。
2. 参数接收原理
在 `senddat.vbs` 中通过 `WScript.Arguments(0)` 获取第一个参数,索引从0开始。
3. 错误处理
检查参数数量(`WScript.Arguments.Count`),避免未收到参数时脚本崩溃。
优化效果:
- 兼容性:适用于任何字符串(含特殊字符和空格)
- 低耦合:无需共享文件或环境变量
- 可靠性:标准命令行参数传递机制
- 灵活性:轻松扩展多个参数(空格分隔)
> 实际应用示例:
> 若需传递更多变量(如端口号),扩展代码如下:
> ' 主脚本传参
> WshShell.Run "senddat.vbs " & Chr(34) & Addr1 & Chr(34) & " 8080", 0, False
>
> ' senddat.vbs 接收
> Port = WScript.Arguments(1) ' 第二个参数
此方案遵循VBScript最佳实践,确保数据传递安全可靠且易于维护。