2009-10-29 12:42:48 +0000 2009-10-29 12:42:48 +0000
144
144

Eseguire un file batch in modo completamente nascosto

Sto cercando un modo per eseguire un file batch (.bat) senza nulla di visibile all'utente (nessuna finestra, nessun nome della barra delle applicazioni, .etc…).

Non voglio usare qualche programma per farlo, sto cercando qualcosa di più pulito. Ho trovato una soluzione che usa VBScript, ma non mi piace molto usare VBS.

Risposte (23)

122
122
122
2009-10-29 16:29:10 +0000

Soluzione 1:

Salvare questa riga di testo come file invisible.vbs:

CreateObject(“Wscript.Shell”).Run “”“” & WScript. Arguments(0) & “”“”, 0, False

Per eseguire qualsiasi programma o file batch in modo invisibile, usarlo così:

wscript.exe “C:\Wherever \invisible.vbs” “C:\Some Other Place\MyBatchFile. bat”

Per poter passare/relayare anche un elenco di argomenti utilizzare solo due doppi apici

CreateObject(“Wscript.Shell”).Run “” & WScript. Argomenti(0) & “”, 0, False

Esempio: Invisible.vbs "Kill.vbs ME.exe"

Soluzione 2:

Utilizzare uno strumento a riga di comando per avviare silenziosamente un processo: Quiet , hidecon o hideexec .

29
29
29
2012-06-29 21:06:44 +0000

Per nascondere i file batch o i file di comando o qualsiasi file….. Utilizzare l'utilità Windows XP built in IExpress.exe per costruire un .EXE dal file batch. Quando si utilizza IExpress assicurarsi di selezionare l'opzione run hidden e spuntare tutte le caselle per non mostrare nulla. Dopo aver creato il file .exe, posizionatelo in qualsiasi cartella di comando run scelta e non lo vedrete mai apparire.

10
10
10
2009-10-29 12:48:03 +0000

use Cmdow è un'utilità a linea di comando Win32 per NT4/2000/XP/2003 che permette di elencare, spostare, ridimensionare, rinominare le finestre, nascondere/non nascondere, disabilitare/abilitare, minimizzare, massimizzare, ripristinare, attivare/attivare, chiudere, uccidere e altro ancora.

Eseguire un file batch nascosto passandogli i parametri:-

cmdow /run /hid mybat arg1 “arg 2”.

10
10
10
2013-01-13 03:36:21 +0000

Se il vostro Batch File può stare in una riga e così tanti caratteri, allora basta usare una scorciatoia cliccando con il tasto destro del mouse all'interno di una cartella messa in una directory casuale, e saltare il resto della procedura guidata, e infine cliccare con il tasto destro del mouse sulla scorciatoia appena creata e cliccare su proprietà e sotto target, inserire ciò che di solito si metterebbe in un bat file. E Bobs tuo zio!

Pro:

No Command Window
 Ability to use an icon
 Same Functionality of bat file

Contro:

Limited to one line, so many characters
9
9
9
2009-10-29 12:49:03 +0000

Eseguire lo script tramite un at job senza renderlo interattivo:

at 11:00 script.bat

Un'altra soluzione, se non vi dispiace installare qualcosa come Python, potreste semplicemente creare uno script ed eseguirlo con pythonw (la versione collegata per le operazioni GUI). Dato che non si utilizza alcuna API grafica, la finestra non verrà visualizzata. Basta usare le chiamate a os.system() e imiterà uno script batch, in quanto è lo stesso che digitare le stringhe nella riga di comando.

Esempio:

import os

os.system("tasklist > C:\tasks.txt")
os.system("ipconfig /all > C:\netinfo.log")
7
7
7
2014-05-12 08:25:28 +0000

Non mi piace la soluzione VBScript.

Scaricare e copiare nircmd.exe nella cartella %systemroot%\system32, quindi aggiungere questo comando alla prima riga del batch:

nircmd.exe win hide ititle "cmd.exe"

o personalizzare il titolo del batch con il comando title per evitare di nascondere tutte le finestre cmd, come questa:

title MyBatch
nircmd.exe win hide ititle "MyBatch"
7
7
7
2009-10-29 15:54:30 +0000

Si può eseguire facilmente.

start /MIN batch.cmd
6
6
6
2013-01-09 20:57:35 +0000

Utilizzando Windows7, è possibile utilizzare il pannello di controllo “Scheduled Task” per pianificare un file batch da eseguire in background in modo invisibile con i permessi specificati e anche come account “SYSTEM”. Vedere l'immagine qui sotto:

&004

Inoltre, anche se non con altrettante capacità, è possibile creare un'attività batch invisibile di script come questa dalla riga di comando usando il comando “AT.exe” senza l'opzione “/interactive”.

5
5
5
2016-10-30 13:15:17 +0000

L'eccellente Bat To Exe Converter convertirà il vostro file .bat o .cmd in un file .exe.

&005

Ha un semplice UI. Potete scegliere di non avere una finestra di console selezionando un'opzione Exe Format di XX Bit | Windows (Invisible). Inoltre, permette di assegnare un'icona, impostare una password e diverse altre opzioni.

4
4
4
2011-01-26 19:38:48 +0000

Sembra che qualcuno abbia fatto una lista dei 7-8 modi per eseguire ‘silent’:

http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html

4
4
4
2017-06-19 08:27:15 +0000

INAVVECCHIATAMENTE, da C/C+++, è di utilizzare la funzione CreateProcess con il flag CREATE_NO_WINDOW. Ha un sacco di potenza extra non mostrata qui. Questo è solo il minimo necessario per sostituire il sistema() o la famiglia _spawn().

STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);

PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );

// Spawn creates a cmd.exe window. CreateProcess doesn't.
//if ( _spawnl( _P_WAIT, szFileNameBAT, szFileNameBAT, NULL ) ) {  
if ( !CreateProcess( szFileNameBAT, szFileNameBAT, NULL, NULL, false,
                     CREATE_NO_WINDOW, NULL, NULL, &si, &pi ) ) {
  MyErrorFunc( "CreateProcess( \"%s\" ): %d", szFileNameBAT, GetLastError() );
  goto MyErrorHandling;
}

WaitForSingleObject( pi.hProcess, INFINITE );

CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
4
4
4
2017-04-16 14:03:20 +0000

È anche possibile creare uno script AutoHotkey :

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
3
3
3
2014-09-24 17:58:35 +0000

L'ho fatto con successo con nircmd in questo modo:

  1. scaricare nircmd.exe dal link
  2. creare il tuo file .bat
  3. la prima riga del file .bat deve essere questa: nircmd.exe win hide ititle "cmd.exe"
  4. 4. selezionare entrambi i file e creare un file autoestraente usando winrar
  5. nella scheda “general”, selezionare la casella “create autoextract file”
  6. nella scheda “advance” selezionare il pulsante “autoextract”
  7. c'è una nuova finestra e selezionare la scheda “mode” e poi selezionare l'opzione: 8. selezionare la scheda “aggiorna” e selezionare l'opzione “sovrascrivi file esistenti”
  8. selezionare la scheda “aggiorna” e selezionare l'opzione “sovrascrivi file esistenti”
  9. selezionare la scheda “generale” e definire una cartella di destinazione per l'estrazione se si desidera e nella casella “Excecute after extraction” scrivere il percorso completo dove il vostro .bat verrà estratto. Es: se si definisce la cartella di estrazione come: c:\“c:\"finestre\” allora il percorso completo da eseguire dopo l'estrazione sarà: “c:\windows\file.bat” (nel caso in cui il vostro .bat si chiami: file.bat)
  10. cliccate su accetta su tutte le finestre

Ora avrete un file .exe che dopo averlo doppiamente cliccato e installato, il vostro .bat verrà eseguito in modo totalmente nascosto.

2
2
2
2016-01-30 16:44:14 +0000

Adding my answer here from another post since it was a duplicate and I don’t see this solution here so now there are 17 different answers for how you can run a batch file hidden. Cancellerò la mia risposta su quel post ad un certo punto nel prossimo futuro.

Crea il tuo script batch con la tua logica batch e i comandi in esso contenuti, e poi crea un nuovo file con estensione .VBS, usa la logica sottostante (esempio che ho fornito qui sotto) e inserisci il percorso completo del tuo file .CMD o .BAT con l’PING -t <IPAddress>, ecc. in modo che esegua il batch in modo nascosto, non mostrando la finestra di comando quando viene eseguito.

Dove la logica nell'esempio sotto specifica C:\Folder\BatchFileName.cmd cambia per puntare allo script batch con i vostri comandi che state eseguendo manualmente, ecc. ora.

Salvare il file .VBS e programmarlo con Task Scheduler Problemi di programmazione di un'attività su windows7 per eseguire una programmazione a tempo indeterminato per le proprie esigenze.

Altrimenti, basta un doppio clic sul file .VBS per eseguire il comando infinito PING che si mette nel file batch che si punta as-needed.

NOTA: Credo che questo sia il punto da cui ho preso questa logica di script, ma funziona in modo affidabile per lo stesso scopo di cui avete bisogno qui, ovvero assicurare che la finestra di comando sia nascosta quando viene eseguito un file batch Server Fault Source

EXAMPLE VBS SCRIPT RUN COMMAND LINE BATCH BATCH HIDING CMD WINDOW

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.cmd" & Chr(34), 0
Set WinScriptHost = Nothing
2
2
2
2012-10-12 07:16:50 +0000
2
2
2
2017-03-09 18:01:08 +0000

Nonostante abbia già risposto a questa domanda, ecco un altro approccio. Il diverso è che lo script batch può auto-nascondersi durante l'esecuzione. Avrete bisogno di due script aggiuntivi - windowMode.bat e getCMDPid.bat (entrambi contengono codice .net). Ecco come allora può essere usato:

@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode hidden

echo this should be written into log despite the cmd window is hidden>log
echo ending the log>>log
exit
1
1
1
2011-07-02 09:04:44 +0000

Non è necessario fare nulla di speciale.

Se si eseguono i file batch da un servizio windows, devono essere nascosti per impostazione predefinita, a meno che non si abilita l'opzione “Consenti al servizio di interagire con il desktop” sul servizio.

1
1
1
2010-06-14 14:11:34 +0000
cmdow /run /hid "file.extention" arg1 "arg 2"
0
0
0
2018-05-05 10:39:45 +0000

Avevo bisogno di nascondere la finestra per un file batch chiamato da un menu contestuale di Explorer, e avevo anche bisogno di aggiungere le virgolette sul parametro. Nessuna delle risposte ha funzionato per me, quindi sto aggiungendo la mia soluzione.

Avevo questo nel “comando” del registro per un menu contestuale di explorer:

cmd /c C:\mypath\myprogram.bat "%1"
``` ```
WScript.CreateObject ("WScript.shell").run "cmd /c C:\mypath\myprogram.bat """ & WScript.Arguments(0) & """", 0, False

Quindi per sostituirlo ho dovuto creare un vbs come questo:

wscript "C:\mypath\myscript.vbs" "%1"
``` &001 


Salva in un posto come `C:\mypath\myscript.vbs` e chiamalo così nel registro: 



&001 


Si noti che il percorso .bat non può avere spazi, quindi sostituirlo con il nome del file 8.3. Quindi, per esempio, `C:\Program Files\myprogram.bat` deve essere indicato come `C:\Progra~1\myprogram.bat`. Per vedere il nome del file 8.3 usare `dir /x`
0
0
0
2018-06-21 08:15:59 +0000

Sono stato creato RunApp per fare un lavoro del genere e anche per usarlo nella mia produzione env, spero che sia d'aiuto.

La configurazione come di seguito:

file: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

E lanciare runapp.exe invece.

0
0
0
2013-06-07 20:50:58 +0000

Ho avuto lo stesso problema, ma l'ho risolto: Shell("filehere" & "parametersforbatchfilehere", vbHidden)

0
0
0
2012-12-17 17:03:50 +0000

Ho iniziato a cercare di capirlo e non ci sono mai riuscito. Questo è stato il massimo che ho ottenuto:

@echo off
if not defined PIL (
    set PIL=1
    start /min "" %~0
    exit /b
)
TITLE Hello World
echo Hello world!
pause>nul
-1
-1
-1
2014-08-15 23:36:30 +0000

Questo funziona per le finestre 8 (eventualmente altre)

  1. 1. Creare un file batch come normale
  2. 2. Creare una scorciatoia per il file batch
  3. 3. Cliccare con il tasto destro del mouse sulla scorciatoia > proprietà
  4. 4. Fare clic su Layout
  5. Deselezionare “Lascia finestra posizione del sistema”
  6. Impostare la posizione sinistra tp -1000
  7. Fare clic su Applica

  8. Fare clic su Applicare

. 8. Fare clic sulla scorciatoia e la scorciatoia verrà eseguita ma non la vedrete :)