【问题标题】:Execute specific vbs file from batch file从批处理文件执行特定的 vbs 文件
【发布时间】:2017-07-25 01:05:22
【问题描述】:

批次内容:

echo Set wshShell =wscript.CreateObject("WScript.Shell")>"C:\Users\Riccardo\Desktop\prova.vbs"
<nul set /p =wshshell.sendkeys ^"^<nul set ^/p ^=>>"C:\Users\Riccardo\Desktop\prova.vbs"
Type "C:\Users\Riccardo\Desktop\prova.txt">>"C:\Users\Riccardo\Desktop\prova.vbs"
echo {bs}^>^"^"C:\Users\Riccardo\Desktop\prova.txt^"^"{enter}^">>"C:\Users\Riccardo\Desktop\prova.vbs"
wscript "C:\Users\Riccardo\Desktop\prova.vbs"

生成的vbs是:

Set wshShell =wscript.CreateObject("WScript.Shell")
wshshell.sendkeys "<nul set /p =La#{bs}>""C:\Users\Riccardo\Desktop\prova.txt""{enter}"

prova.txt 包含:

拉#

从新的命令提示符会话执行此行后:

wscript "C:\Users\Riccardo\Desktop\prova.vbs"

prova.txt 变成

但是如果从批处理中执行与上面相同的行:

wscript "C:\Users\Riccardo\Desktop\prova.vbs"

什么都没有发生!

我该如何解决这个问题?

【问题讨论】:

  • 无法复制。您能否创建一个没有所有硬编码路径的minimal reproducible example,以便所有人都能看到您的问题?
  • 你好。简而言之,我需要通过批处理文件执行 my.vbs 文件。在命令提示符下输入代码: wscript "C:\Users\Riccardo\Desktop\prova.vbs" 可以,但是批量不行
  • 哇,一个批处理脚本,用于创建一个 VBScript 以通过SendKeys“键入”一个批处理命令(使用set /p 写入文件不少于)。这是我很长一段时间以来见过的最可怕的事情之一。请抹去这种可憎的一切痕迹,然后重新开始。您要解决的实际问题是什么?
  • 整个代码有效。问题是通过批处理代码: wscript "C:\Users\Riccardo\Desktop\prova.vbs" 它不起作用,但它只能通过打开提示并手动输入来工作
  • 我同意@AnsgarWiechers 的观​​点,有更好的方法来完成你想做的任何事情。

标签: batch-file vbscript


【解决方案1】:

尝试像这样调用脚本:

C:\Users\Riccardo\Desktop\prova.vbs

如果这不起作用,请将目录更改为您的桌面,然后拨打vbs

cd C:\Users\Riccardo\Desktop\
prova.vbs

这应该可以在批处理文件中使用。

【讨论】:

  • 不起作用。我开始了另一个解决方案。还是谢谢。
【解决方案2】:

我解决了我的问题。 “Prova.bat”代码是:

echo Set wshShell =wscript.CreateObject("WScript.Shell")>prova.vbs
echo wshShell.Run "cmd">>prova.vbs
echo WScript.Sleep 250>>prova.vbs
<nul set /p =wshShell.sendkeys ^"^<nul set ^/p ^=>>prova.vbs
Type prova.txt>>prova.vbs
<nul set /p ={bs}^>prova.txt{enter}exit{enter}^">>prova.vbs
wscript prova.vbs
DEL /q prova.vbs 2> NUL

生成和删除的“Prova.vbs”为:

Set wshShell =wscript.CreateObject("WScript.Shell")
wshShell.Run "cmd"
WScript.Sleep 250
wshShell.sendkeys "<nul set /p =La#8{bs}>prova.txt{enter}exit{enter}"

之前的“Prova.txt”:

La#8

现在的“Prova.txt”:

La#

我找到了使用 bat+vbs 文件在 txt 文件中插入退格字符的方法! ;-) 我希望这样的解决方案可以对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2016-09-09
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多