【问题标题】:Windows 7 VBS generated batch file will not startWindows 7 VBS 生成的批处理文件无法启动
【发布时间】:2011-07-13 17:16:16
【问题描述】:

我正在使用 VBS 构建用于安装更新的批处理文件。为了确保它按我预期的方式工作,我构建了这个小测试脚本,但是无论第一个字符是什么,生成的批处理文件在启动时都会出现错误,并带有无法识别的字符。 VBS 脚本:

option explicit

Dim objFSO, objFile, objWShell

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("Test.bat", 2, True)
Set objWShell = CreateObject("WScript.Shell")

objFile.Write("@echo off" & vbCrLf & "echo " & chr(34) & "this is a test" & chr(34) & vbCrLf & "echo " & chr(34) & "This is only a test" & chr(34) & vbCrLf & "timeout /t 5")
Set objFile = Nothing

objWShell.Run "Test.bat"

wscript.quit

运行脚本会创建并立即关闭运行 bat 的窗口,但从命令行启动生成的 bat 会导致传递的第一个命令(在本例中为 @echo off,但已与其他命令一起尝试)包含一个额外的字符开头,并且只传递该字符(显示为实心正方形,大概是一个窗口不知道)和批处理文件中第一个命令的第一个字符。因此,我得到类似于“▬@ 不是可识别的内部或外部命令、可运行程序或批处理文件。”

在查看批处理文件和生成脚本时,在 npp 中选择“显示所有字符”不会显示多余的字符,并且两者中的所有换行符都是 crlf。有什么想法吗?

【问题讨论】:

    标签: windows-7 vbscript batch-file


    【解决方案1】:

    将 CreateTextFile 的最后一个参数更改为 False 会使文件变为 ASCII,然后它可以正常运行。 (您当前将其保存为 Unicode,这通常不能很好地与命令提示符配合使用)

    【讨论】:

    • 我明白了。查找它,我正在给它提供参数,就好像它是 OpenTextFile 方法一样。谢谢!
    猜你喜欢
    • 2014-10-01
    • 2021-07-27
    • 2017-08-13
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多