Running a CMD or BAT in silent mode

前端 未结 11 1017
夕颜
夕颜 2020-11-28 03:51

How can I run a CMD or .bat file in silent mode? I\'m looking to prevent the CMD interface from being shown to the user.

相关标签:
11条回答
  • 2020-11-28 04:00

    If i want to run command promt in silent mode, then there is a simple vbs command:

    Set ws=CreateObject("WScript.Shell")
    ws.Run "TASKKILL.exe /F /IM iexplore.exe"
    

    if i wanted to open an url in cmd silently, then here is a code:

    Set WshShell = WScript.CreateObject("WScript.Shell") 
    Return = WshShell.Run("iexplore.exe http://otaxi.ge/log/index.php", 0)
    'wait 10 seconds
    WScript.sleep 10000 
    Set ws=CreateObject("WScript.Shell")
    ws.Run "TASKKILL.exe /F /IM iexplore.exe"
    
    0 讨论(0)
  • 2020-11-28 04:03

    Include the phrase

    @echo off

    right at the top of your bat script.

    0 讨论(0)
  • 2020-11-28 04:09

    I'm pretty confident I like this method the best. Copy and paste the code below into a .vbs file. From there you'll call the batch file... so make sure you edit the last line to specify the path and name of the batch file (which should contain the file you'd like to launch or perform the actions you need performed)

    Const HIDDEN_WINDOW = 12 
    
    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set objStartup = objWMIService.Get("Win32_ProcessStartup") 
    
    Set objConfig = objStartup.SpawnInstance_ 
    objConfig.ShowWindow = HIDDEN_WINDOW 
    Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") 
    errReturn = objProcess.Create("C:\PathOfFile\name.bat", null, objConfig, intProcessID)
    

    It definitely worked for me. Comments are welcomed :)

    0 讨论(0)
  • 2020-11-28 04:11

    Try SilentCMD. This is a small freeware program that executes a batch file without displaying the command prompt window.

    0 讨论(0)
  • 2020-11-28 04:11

    The below silent .bat file code prevents the need to have two bat files (using "goto" and ":").

    It does it all in the same .bat file. Tested and confirmed working in Windows 10

    Make sure you replace "C:\pathToFile\ThisBatFile.bat " with the path to this same .bat file! Keep the space after ".bat".

    @echo off
    if [%1]==[] (
        goto PreSilentCall
    ) else (
        goto SilentCall
    )
    
    :PreSilentCall
    REM Insert code here you want to have happen BEFORE this same .bat file is called silently
    REM such as setting paths like the below two lines
    
    set WorkingDirWithSlash=%~dp0
    set WorkingDirectory=%WorkingDirWithSlash:~0,-1%
    
    REM below code will run this same file silently, but will go to the SilentCall section
    cd C:\Windows\System32
    if exist C:\Windows\Temp\invis.vbs ( del C:\Windows\Temp\invis.vbs /f /q )
    echo CreateObject("Wscript.Shell").Run "C:\pathToFile\ThisBatFile.bat " ^& WScript.Arguments(0), 0, False > C:\Windows\Temp\invis.vbs
    wscript.exe C:\Windows\Temp\invis.vbs Initialized
    if %ERRORLEVEL%==0 (
        echo Successfully started SilentCall code. This command prompt can now be exited.
        goto Exit
    )
    
    
    :SilentCall
    cd %WorkingDirectory%
    REM Insert code you want to be done silently. 
    REM Make sure this section has no errors as you won't be able to tell if there are any, 
    REM since it will be running silently. You can add a greater than symbol at the end of
    REM your commands in this section to output the results to a .txt file for the purpose 
    REM of debugging this section of code.
    
    
    :Exit
    

    If your .bat file needs more than just the "Initialized" argument (which tells the bat file to go to :SilentCall section), add "^& WScript.Arguments(1)," , "^& WScript.Arguments(2)," ,etc. depending on the number of arguments, then edit the line where wscript.exe is called:

    "wscript.exe C:\Windows\Temp\invis.vbs Initialized BatFileArgOne BatFileArgTwo"

    0 讨论(0)
  • 2020-11-28 04:15

    I think this is the easiest and shortest solution to running a batch file without opening the DOS window, it can be very distracting when you want to schedule a set of commands to run periodically, so the DOS window keeps popping up, here is your solution. Use a VBS Script to call the batch file ...

    Set WshShell = CreateObject("WScript.Shell" ) 
    WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
    Set WshShell = Nothing 
    

    Copy the lines above to an editor and save the file with .VBS extension. Edit the .BAT file name and path accordingly.

    0 讨论(0)
提交回复
热议问题