【问题标题】:VBS script (VBScript) errors 800A0035 and/or 800A004C only on the first execution of the script仅在第一次执行脚本时出现 VBS 脚本 (VBScript) 错误 800A0035 和/或 800A004C
【发布时间】:2012-09-03 02:01:38
【问题描述】:

我对所有这些 VBS 东西都很陌生,因为基本上我需要做的就是制作一个我可能已经编写的简单 VBS 脚本,但是,我的问题是它给了我 800A0035800A004C 错误当我在特定的 PC 上第一次执行它时,当我第二次执行它时,它运行得很好,并且做它应该做的事情。顺便说一句,在我自己的计算机上,即使在第一次执行时它也可以正常工作。 我知道这些错误与错误的路径有关,但我已经多次检查了我的脚本,我 100% 肯定它们是正确的。

这是脚本:

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "rar.bat" , "rarp.bat"
'HideBat.vbs
CreateObject("Wscript.Shell").Run "rarp.bat", 0, True

脚本应该做的是将rar.bat 文件重命名为rarp.bat 并运行该批处理文件(rarp.bat)而不弹出命令提示符。我猜批处理文件的作用无关紧要,但无论如何,它只是运行 WinRAR

rar.bat 文件和 VBS 脚本在同一个文件夹中,这就是我在脚本中使用相对路径的原因。我不能使用绝对路径,因为我需要在多台计算机上运行脚本。

我在互联网上的某处读到,默认情况下,VBS 脚本在使用相对路径时首先查找 C:\Windows\System32 中的文件。我什至尝试在脚本中使用绝对路径,但也没有用。以下是我需要它们的样子:%systemdrive%\users\%username%\appdata\roaming\rar.bat 但这在 VBS 脚本中根本不起作用。

我真的认为我需要的是一个简单的脚本,但显然很难让它正常工作。我会非常感谢那些帮助我的人。

非常感谢您。

问候。

【问题讨论】:

  • 对于 8nnnnnnn 错误,请尝试注销然后重新注册这些文件:CSCRIPT.EXE, JSCRIPT.DLL, MSSCRIPT.OCX, SCRIPTLE.DLL, VBSCRIPT.DLL, WSCRIPT.EXE, WSHOM.OCX
  • 好吧,感谢您的建议,但我是 VBS 脚本的初学者。请告诉我如何注销和重新注册这些文件?
  • 使用regsvr32 /u {the filename} 取消注册并使用regsvr32 {filename} 注册。从命令提示符和 Windows 的 SYSTEM32 目录运行。
  • 好的,我明白你的意思,但我需要先运行 VBS 脚本,之前不运行任何其他脚本。是否可以通过 VBS 脚本注册和注销这些文件?提前致谢。
  • 我认为这不是由于 Windows 注册表损坏,因为我的问题发生在除我之外的所有其他计算机上。我已经尝试在至少九台不同的计算机上运行它。请问您还有什么建议吗?在 VBS 脚本中实现“GetParentFolder”怎么样?告诉脚本“far.bat”与VBS脚本本身位于同一文件夹中是否有帮助?

标签: vbscript path runtime-error wsh


【解决方案1】:

您的脚本(至少是已发布的部分)出错的唯一方法是找不到要重命名的源文件,您应该添加完整的脚本和错误消息来确定。 我想这是由你的电脑上的安全设置引起的,它比其他电脑上的更宽容,例如 UAC ?在另一台电脑上,尝试将文件放在像 c:\test 这样的映射中,然后在检查文件 rar.bat 确实存在于同一个映射中后再次运行它。您在另一台电脑上是否有相同的凭据(管理员)? 如果你只是想隐藏运行bat文件,为什么要重命名?

你如何下载蝙蝠?然后如何调用脚本?可能是第二次不再是问题的时间问题。在这种情况下,如果文件已经准备好,请检查您的脚本,并在没有的情况下循环睡眠

如果你想使用绝对路径,你可以试试这个

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("PROCESS")
path = WshSysEnv("USERPROFILE") & "\appdata\roaming\rar.bat"
wscript.echo path
objFSO.MoveFile path , "rarp.bat"
CreateObject("Wscript.Shell").Run "rarp.bat", 1, True

【讨论】:

  • 感谢您的回答。实际上我发布的部分是整个脚本。这是错误的图片:“i.imgur.com/U63tF.png”我认为不是其他电脑的安全设置引起的,因为我在几台电脑上尝试过,XP、VISTA和Win7,账户有限,还有管理员帐户。它不起作用,它在每台计算机上的行为方式都相同。它在第一次执行时不起作用(它给出了错误),但它在第二次执行时完美运行。这是我无法理解的!我也听从了您的建议,将文件放在 C:\ 中无济于事。
  • 我检查了“rar.bat”是否存在于与脚本相同的文件夹中。甚至我的同事也帮助了我。为什么该脚本在第二次运行时运行良好?我不应该以某种方式使用“GetParentFolder”指定路径(不知道如何)?正如我之前所说,我 100% 确定文件同时位于同一个文件夹中。还有其他想法吗?我仍然认为一定有什么与它在第二次执行时运行良好的事实有关。顺便说一句,VBS 脚本是下载到这些 PC 上的,因此要重命名。
  • 根据新信息为我的回答添加了一些建议
  • 谢谢,我放弃了尝试使用真实路径执行 bat 文件。有没有办法在 VBS 脚本中使用环境变量来使用绝对路径?像:objFSO.MoveFile "%systemdrive%\users\%username%\appdata\roaming\rar" , "%systemdrive%\users\%username%\appdata\roaming\rarp.bat" 我知道这段代码没有t 在 VBS 脚本中工作,它只在 Windows 命令行中工作,但是有没有办法在 VBS 脚本中使用上述提到的环境变量?提前非常感谢。
  • 当然,再次编辑了我的答案,但如果是时间问题,那将无济于事
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
相关资源
最近更新 更多