我正在尝试将变量从VBS传递到BAT,但我得到“系统无法找到指定的文件”
这是我的vbs:
Option Explicit
Dim strFile
strFile = SelectFile( )
If strFile = "" Then
WScript.Echo "No file selected."
Else
WScript.Echo """" & strFile & """"
End If
Function SelectFile( )
Dim objExec, strMSHTA, wshShell
SelectFile = ""
strMSHTA = "mshta.exe ""about:" & "<" & "input type=file id=FILE>" _
& "<" & "script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _
& ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);" & "<" & "/script>"""
Set wshShell = CreateObject( "WScript.Shell" )
Set objExec = wshShell.Exec( strMSHTA )
SelectFile = objExec.StdOut.ReadLine( )
Dim wshShelll
Set WshShelll = Wscript.CreateObject("WScript.Shell")
WshShelll.Run "C:\Users\nbendjelida\Desktop\email.bat" & SelectFile
Set objExec = Nothing
Set wshShell = Nothing
Set wshShelll = Nothing
End Function
这是我的蝙蝠:
"C:\Program Files\Microsoft Office\Office12\Outlook.exe" /eml %1
你知道吗?
答案 0 :(得分:0)
我重复sachadee的正确答案,并提供更多详细信息,以便从未回答的问题列表中删除此问题。
必须使用第一个参数调用 Run Method,该命令是使用与在命令行窗口中输入命令时完全相同的参数执行的命令。引用的Microsoft帮助页面上的示例在命令Notepad
之后还有一个空格字符。
使用文件名作为第一个参数调用批处理文件所需的命令行是:
C:\Users\nbendjelida\Desktop\email.bat name_of_selected_file
但Windows脚本主机代码行
WshShelll.Run "C:\Users\nbendjelida\Desktop\email.bat" & SelectFile
为命令构建字符串以
运行C:\Users\nbendjelida\Desktop\email.bat name_of_selected_file
因为缺少空格字符。
使用正确的Windows脚本主机代码行解决问题
WshShelll.Run "C:\Users\nbendjelida\Desktop\email.bat " & SelectFile
因为批处理文件的名称和所选文件的名称之间的空格特征。
如果所选文件的名称包含1个或多个空格,则变量SelectFile
必须在开头和结尾包含双引号,或者在连接命令字符串时添加必要的双引号。< / p>
整个批处理文件名也包含空格字符的示例:
Dim FileName
FileName = "%TEMP%\Any File.txt"
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """%USERPROFILE%\Desktop\My Batch File.bat"" """ & FileName & """"
包含
的当前用户桌面上的批处理文件My Batch File.bat
@echo %0 %*
@pause
输出,例如Windows 7
"C:\Users\username\Desktop\My Batch File.bat" "C:\User\username\AppData\Local\Temp\Any File.txt"
或英文版Windows XP
"C:\Documents and Settings\user name\Desktop\My Batch File.bat" "C:\Documents and Settings\user name\Local Settings\Temp\Any File.txt"
这是命令字符串的预期结果。
(是的,用户名可以包含空格字符,但Microsoft建议不要在用户名中使用空格字符,请参阅Microsoft页面Creating User and Group Accounts。)