无忧启动论坛

标题: 全盘搜索到的批处理里边不可以有vbs吗 [打印本页]

作者: wenbieba    时间: 2023-9-20 18:34
标题: 全盘搜索到的批处理里边不可以有vbs吗
本帖最后由 wenbieba 于 2023-9-20 19:37 编辑

全盘搜索到指定批处理并运行,但搜索到的批处理命令里边不可以调用VBS

如搜索到的SetupOOBE.cmd调用OOBE.vbs没任何相应,用鼠标打开SetupOOBE.vbs会正常运行

SetupOOBE.bat同时也用命令写为vbs
SetupOOBE.bat脚本:
@echo off
start %~dp0OOBE.vbs


SetupOOBE.vbs脚本:
CreateObject("WScript.Shell").Run "cmd /c SetupOOBE.bat",0



麻烦无忧大神看看问题出在什么地方,难道批处理不允许多次调用,不允许自动调用vbs,只能手动调用vbs

作者: nathan6498    时间: 2023-9-20 20:09
谢谢分享
作者: wjgyz740526    时间: 2023-9-20 21:59
你SetupOOBE.vbs脚本里调用的是SetupOOBE.bat,然后SetupOOBE.bat调用的是SetupOOBE.vbs?你是要干嘛啊?互相循环调用??
作者: szwp    时间: 2023-9-20 21:59
bat写了路径,vbs没写,让vbs显示个对话框就知道有没运行
作者: wenbieba    时间: 2023-9-20 22:06
wjgyz740526 发表于 2023-9-20 21:59
你SetupOOBE.vbs脚本里调用的是SetupOOBE.bat,然后SetupOOBE.bat调用的是SetupOOBE.vbs?你是要干嘛啊?互 ...

SetupOOBE.bat调用OOBE.vbs,OOBE.vbs等同于OOBE.bat
作者: wenbieba    时间: 2023-9-20 22:13
szwp 发表于 2023-9-20 21:59
bat写了路径,vbs没写,让vbs显示个对话框就知道有没运行

已经可以运行了,不知在vbs头加上什么能使vbs调用的批处理以管理员身份运行,如果在调用的批处理里加以管理员身份运行代码,用vbs调用该批处理的vbs会出现界面,去掉不出现界面达到隐藏,古想让vbs完成以管理员身份运行指定的bat
作者: yc2428    时间: 2023-9-20 22:21
谢谢分享
作者: szwp    时间: 2023-9-21 08:10
wenbieba 发表于 2023-9-20 22:13
已经可以运行了,不知在vbs头加上什么能使vbs调用的批处理以管理员身份运行,如果在调用的批处理里加以管 ...

可以有vbs
作者: wenbieba    时间: 2023-9-21 10:58
szwp 发表于 2023-9-21 08:10
可以有vbs

vbs头上加上什么命令,让运行指定批处理以管理员身份运行
作者: holley2008    时间: 2023-9-21 11:40
wenbieba 发表于 2023-9-21 10:58
vbs头上加上什么命令,让运行指定批处理以管理员身份运行

这种?

  1. If WScript.Arguments.Count <> 1 Then WScript.Quit 1
  2. RunAsAdmin
  3. Main

  4. Sub RunAsAdmin()
  5.     Set Shell = CreateObject("WScript.Shell")
  6.     Set Env = Shell.Environment("VOLATILE")
  7.     If Shell.Run("%ComSpec% /C""NET FILE""", 0, True) <> 0 Then
  8.         Env("CurrentDirectory") = Shell.CurrentDirectory
  9.         ArgsList =""
  10.         For i = 1 To WScript.Arguments.Count
  11.             ArgsList = ArgsList &"""""" & WScript.Arguments(i - 1)
  12.         Next
  13.         CreateObject("Shell.Application").ShellExecute WScript.FullName,"""" & WScript.ScriptFullName & ArgsList &"""", ,"runas", 5
  14.         WScript.Sleep 100
  15.         Env.Remove("CurrentDirectory")
  16.         WScript.Quit
  17.     End If
  18.     If Env("CurrentDirectory") <>"" Then Shell.CurrentDirectory = Env("CurrentDirectory")
  19. End Sub

  20. Sub Main()
  21.     '你的代码放在这!
  22. End Sub
复制代码

作者: wenbieba    时间: 2023-9-21 11:48
holley2008 发表于 2023-9-21 11:40
这种?

谢谢大师
作者: wenbieba    时间: 2023-9-21 11:53
holley2008 发表于 2023-9-21 11:40
这种?

加上之后不运行了

If WScript.Arguments.Count <> 1 Then WScript.Quit 1
RunAsAdmin
Main

Sub RunAsAdmin()
    Set Shell = CreateObject("WScript.Shell")
    Set Env = Shell.Environment("VOLATILE")
    If Shell.Run("%ComSpec% /C""NET FILE""", 0, True) <> 0 Then
        Env("CurrentDirectory") = Shell.CurrentDirectory
        ArgsList =""
        For i = 1 To WScript.Arguments.Count
            ArgsList = ArgsList &"""""" & WScript.Arguments(i - 1)
        Next
        CreateObject("Shell.Application").ShellExecute WScript.FullName,"""" & WScript.ScriptFullName & ArgsList &"""", ,"runas", 5
        WScript.Sleep 100
        Env.Remove("CurrentDirectory")
        WScript.Quit
    End If
    If Env("CurrentDi
作者: wenbieba    时间: 2023-9-21 11:53
holley2008 发表于 2023-9-21 11:40
这种?

加上之后不运行了

If WScript.Arguments.Count <> 1 Then WScript.Quit 1
RunAsAdmin
Main

Sub RunAsAdmin()
    Set Shell = CreateObject("WScript.Shell")
    Set Env = Shell.Environment("VOLATILE")
    If Shell.Run("%ComSpec% /C""NET FILE""", 0, True) <> 0 Then
        Env("CurrentDirectory") = Shell.CurrentDirectory
        ArgsList =""
        For i = 1 To WScript.Arguments.Count
            ArgsList = ArgsList &"""""" & WScript.Arguments(i - 1)
        Next
        CreateObject("Shell.Application").ShellExecute WScript.FullName,"""" & WScript.ScriptFullName & ArgsList &"""", ,"runas", 5
        WScript.Sleep 100
        Env.Remove("CurrentDirectory")
        WScript.Quit
    End If
    If Env("CurrentDi
作者: wenbieba    时间: 2023-9-21 11:53
holley2008 发表于 2023-9-21 11:40
这种?

加上之后不运行了

If WScript.Arguments.Count <> 1 Then WScript.Quit 1
RunAsAdmin
Main

Sub RunAsAdmin()
    Set Shell = CreateObject("WScript.Shell")
    Set Env = Shell.Environment("VOLATILE")
    If Shell.Run("%ComSpec% /C""NET FILE""", 0, True) <> 0 Then
        Env("CurrentDirectory") = Shell.CurrentDirectory
        ArgsList =""
        For i = 1 To WScript.Arguments.Count
            ArgsList = ArgsList &"""""" & WScript.Arguments(i - 1)
        Next
        CreateObject("Shell.Application").ShellExecute WScript.FullName,"""" & WScript.ScriptFullName & ArgsList &"""", ,"runas", 5
        WScript.Sleep 100
        Env.Remove("CurrentDirectory")
        WScript.Quit
    End If
    If Env("CurrentDi
作者: wenbieba    时间: 2023-9-21 11:54
holley2008 发表于 2023-9-21 11:40
这种?

加上之后不运行了

If WScript.Arguments.Count <> 1 Then WScript.Quit 1
RunAsAdmin
Main

Sub RunAsAdmin()
    Set Shell = CreateObject("WScript.Shell")
    Set Env = Shell.Environment("VOLATILE")
    If Shell.Run("%ComSpec% /C""NET FILE""", 0, True) <> 0 Then
        Env("CurrentDirectory") = Shell.CurrentDirectory
        ArgsList =""
        For i = 1 To WScript.Arguments.Count
            ArgsList = ArgsList &"""""" & WScript.Arguments(i - 1)
        Next
        CreateObject("Shell.Application").ShellExecute WScript.FullName,"""" & WScript.ScriptFullName & ArgsList &"""", ,"runas", 5
        WScript.Sleep 100
        Env.Remove("CurrentDirectory")
        WScript.Quit
    End If
    If Env("CurrentDi
作者: holley2008    时间: 2023-9-21 12:25
wenbieba 发表于 2023-9-21 11:53
加上之后不运行了

If WScript.Arguments.Count  1 Then WScript.Quit 1

在前面只加这一段试试:

  1. Set WshShell = WScript.CreateObject("WScript.Shell")
  2. If WScript.Arguments.Length = 0 Then
  3.   Set ObjShell = CreateObject("Shell.Application")
  4.   ObjShell.ShellExecute"wscript.exe" _
  5.     ,"""" & WScript.ScriptFullName &""" RunAsAdministrator", ,"runas", 1
  6.   WScript.Quit
  7. End if
复制代码

作者: 无犹启动    时间: 2023-10-29 13:31
谢谢分享




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3