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

Draai een batchbestand op een volledig verborgen manier

Ik ben op zoek naar een manier om een batchbestand (.bat) te draaien zonder dat er iets zichtbaar is voor de gebruiker (geen venster, geen naam van de taakbalk, .etc…).

Ik wil niet een of ander programma gebruiken om dat te doen, ik ben op zoek naar iets schoner. Ik heb een oplossing gevonden die VBScript gebruikt, maar ik vind het ook niet leuk om VBS te gebruiken.

Antwoorden (23)

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

Oplossing 1:

Sla deze ene regel tekst op als bestand invisible.vbs:

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

Om een programma of een batch bestand onzichtbaar te draaien, gebruik je het als volgt:

wscript.exe "C:\Whereverbleble.vbs” “C:\Some Other Place\MyBatchFile. bat”

Om ook een lijst met argumenten te kunnen doorgeven/relayen gebruik je slechts twee dubbele aanhalingstekens

CreateObject (“Wscript.Shell”).Run “” & WScript. Argumenten(0) & “”, 0, Valse

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

Oplossing 2:

Gebruik een opdrachtregeltool om een proces stil te starten: Rustig , hidecon of hideexec .

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

Om batch- of opdrachtbestanden te verbergen of om het even welke bestanden… Gebruik het ingebouwde hulpprogramma IExpress.exe van Windows XP om een .EXE van het batchbestand te bouwen. Wanneer u IExpress gebruikt, zorg er dan voor dat u de optie Verborgen uitvoeren aanvinkt en alle vakjes over het niet tonen van iets aanvinkt. Nadat je je .exe hebt gemaakt, plaats je deze in een willekeurige opdrachtmap en je zult hem nooit meer zien verschijnen.

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

gebruik Cmdow is een Win32 commandline-hulpprogramma voor NT4/2000/XP/2003 dat het mogelijk maakt om vensters te vermelden, te verplaatsen, te verkleinen, te hernoemen, te verbergen/verbergen, uit te schakelen/in te schakelen, te minimaliseren, te maximaliseren, te herstellen, te activeren/inactiveren, te sluiten, te doden en meer.

Voer een batchbestand uit dat verborgen is en dat de parameters doorlaat:-

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

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

Als uw Batch-bestand kan passen in één regel en zoveel karakters, gebruik dan gewoon een Shortcut door met de rechtermuisknop te klikken in een map die in een willekeurige map is gezet, en sla de rest van de wizard over, en klik ten slotte met de rechtermuisknop op de zojuist gemaakte shortcut en klik op eigenschappen en onder target, voer in wat u normaal gesproken in een bat-bestand zou zetten. En Bobs je oom!

Voors:

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

Nadelen:

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

Voer het script uit via een at job zonder het interactief te maken:

at 11:00 script.bat
  • *

Een andere oplossing, als je het niet erg vindt om iets als Python te installeren, kun je gewoon een script maken en het uitvoeren met pythonw (de gekoppelde versie voor GUI-bewerkingen). Aangezien je geen grafische API’s gebruikt, wordt het venster niet weergegeven. Gebruik gewoon aanroepen naar os.system() en het zal een batch-script nabootsen, omdat het hetzelfde is als het typen van de strings in de commandoregel.

Voorbeeld:

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

Ik hou niet van VBScript oplossing.

Download en kopieer nircmd.exe naar uw %systemroot%\system32 map, voeg dan deze opdracht toe aan de eerste regel van uw batch:

nircmd.exe win hide ititle "cmd.exe"

of maak uw batch titel eerst op maat met title opdracht om te voorkomen dat u alle cmd vensters verbergt, zoals dit:

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

U kunt het gemakkelijk minimaliseren.

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

Met behulp van Windows7 kunt u het “Scheduled Task” controlepaneel gebruiken om een batchbestand te plannen dat onzichtbaar op de achtergrond moet worden uitgevoerd met gespecificeerde rechten en zelfs als het “SYSTEM” account. Zie onderstaande schermafbeelding:

Verder kunt u, hoewel met minder mogelijkheden, ook een onzichtbare batch-scripttaak als deze maken vanaf de opdrachtregel met het “AT.exe” commando zonder de ‘/interactive’ optie.

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

De uitstekende Bat To Exe Converter converteert uw .bat- of .cmd-bestand naar een .exe-bestand.

Het heeft een eenvoudige UI. U kunt ervoor kiezen geen consolevenster te hebben door een Exe Format of XX Bit | Windows (Invisible) optie te selecteren. Ook kunt u een pictogram toewijzen, een wachtwoord instellen en verschillende andere opties.

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

Het lijkt erop dat iemand een lijst heeft gemaakt van de 7-8 manieren om ‘stil’ te draaien:

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

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

JET EEN ANDERE manier, van C/C++, is om de CreateProcess functie te gebruiken met de CREATENONOWINDOW vlag. Het heeft veel extra kracht die hier niet wordt getoond. Dit is slechts het minimum dat je nodig hebt om het systeem() of de familie te vervangen.

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

U kunt ook een AutoHotkey script maken:

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

Ik heb het met succes gedaan met nircmd op deze manier:

  1. download nircmd.exe van de link
  2. maak uw .bat-bestand
  3. de eerste regel van .bat-bestand moet deze zijn: nircmd.exe win hide ititle "cmd.exe"
  4. Selecteer beide bestanden en maak een zelfuitpakkend bestand met behulp van winrar
  5. in het tabblad “algemeen” vinkt u “automatisch uitpakbestand maken” aan
  6. in het tabblad “vooraf” selecteert u de knop “automatisch uitpakken”
  7. er is een nieuw venster en selecteer het tabblad “modus” en selecteer vervolgens de optie: “verberg alles”
  8. selecteer de tab “update” en selecteer de optie “overschrijf bestaande bestanden”
  9. 9. Selecteer de tab “algemeen” en definieer desgewenst een doelmap voor het uitpakken en schrijf in het vakje “Uitvoeren na het uitpakken” het volledige pad waar uw .bat wordt uitgepakt. Ex: wanneer u de uitpakmap als volgt definieert “c:window”, dan is het volledige pad voor het uitpakken na het uitpakken: “c:windows-bestand.bat” (in het geval dat je .bat heet: file.bat)
  10. klik op accept op alle windows

Nu heb je een .exe bestand dat nadat je er op geklikt hebt en het geïnstalleerd hebt, je .bat volledig verborgen zal lopen.

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

Hiermee voeg ik mijn antwoord toe van een andere post omdat het een duplicaat was en ik deze oplossing hier niet zie, dus nu zijn er 17 verschillende antwoorden voor hoe je een batchbestand verborgen kunt houden. Ik zal mijn antwoord op dat bericht in de nabije toekomst verwijderen.

Maak uw batch-script aan met uw batch-logica en opdrachten erin, en maak dan een nieuw bestand aan met de extensie .VBS, gebruik de onderstaande logica (voorbeeld dat ik hieronder heb gegeven) en sluit gewoon het volledige pad aan naar uw .CMD- of .BAT-bestand met de PING -t <IPAddress>, enz. commando’s zodat het de batch op een verborgen manier uitvoert zonder het commando venster te tonen wanneer het wordt uitgevoerd.

Waar de logica in het onderstaande voorbeeld C:\Folder\BatchFileName.cmd specificeert, verander je dat om naar het batch script te wijzen met je commando’s die je nu handmatig uitvoert, etc.

Sla het .VBS-bestand op en plan het met Task Scheduler Problemen met het plannen van een taak op windows7 om een onbeperkt schema uit te voeren voor uw behoeften.

Anders dubbelklikt u op het .VBS-bestand om het oneindige PING-bestand uit te voeren dat u in het batchbestand hebt gezet en u wijst het aan als nodig.

NOTE: Ik geloof dat dit de plek is waar ik deze scriptlogica vandaan heb, maar het werkt betrouwbaar voor hetzelfde doel dat je hier nodig hebt, namelijk ervoor zorgen dat het opdrachtvenster wordt verborgen wanneer een batchbestand wordt uitgevoerd Server Fault Source

EXAMPLE VBS SCRIPT RUN COMMAND LINE 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
  • Ik heb alle manieren verzameld die ik ken om een verborgen proces te starten met een batch zonder externe tools. met een gebruiksklaar script (sommige zijn vrij rijk aan opties), en ze vormen allemaal een commandoregel. waar mogelijk wordt ook de PID teruggegeven. gebruikte tools zijn IEXPRESS, SCHTASKS, WScript.Shell, Win32_Process en JScript.Net.
2
2
2
2017-03-09 18:01:08 +0000

Ondanks dat ik dit al heb beantwoord, is dit een andere aanpak. Het andere hier is dat het batchscript zichzelf kan verbergen tijdens het draaien. Je hebt echter twee extra scripts nodig - windowMode.bat en getCMDPid.bat (beide bevatten .net code). Hoe kunnen we dit dan gebruiken:

@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

Als u de batchbestanden van een windows service uitvoert, zouden ze standaard verborgen moeten zijn, tenzij u de optie “Allow service to interact with desktop” op de service inschakelt.

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

Ik moest het venster verbergen voor een batchbestand dat werd aangeroepen vanuit een contextmenu van de verkenner, en ik moest ook aanhalingstekens toevoegen aan de parameter. Geen van de antwoorden werkte voor mij, dus ik voeg mijn eigen oplossing toe.

Ik had dit op het register “commando” voor een explorer context menu:

cmd /c C:\mypath\myprogram.bat "%1"

Dus om het te vervangen moest ik een vbs als volgt aanmaken:

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

Opslaan in een plaats als C:\mypath\myscript.vbs en het zo noemen in het register:

wscript "C:\mypath\myscript.vbs" "%1"

Merk op dat het .bat pad geen spaties kan hebben, dus vervang het door de 8.3 filenaam. Dus bijvoorbeeld C:\Program Files\myprogram.bat moet worden aangeduid als C:\Progra~1\myprogram.bat. Om de 8.3 bestandsnaam te zien gebruikt u dir /x

0
0
0
2018-06-21 08:15:59 +0000

Ik ben gemaakt RunApp om zo'n klus te klaren en ook om het te gebruiken in mijn productie env, hoop dat het helpt.

De configuratie zoals hieronder:

** bestand: config.arg**

:style:hidden

MyBatchFile.bat
arg1
arg2

en start runapp.exe in plaats daarvan.

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

Ik had hetzelfde probleem, maar kwam er achter: Shell("filehere" & "parametersforbatchfilehere", vbHidden)

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

Ik begon te proberen dit uit te zoeken en het is nooit echt gelukt. Dit was zo dichtbij:

@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

Dit werkt voor Windows 8 (eventueel andere)

  1. Maak een batchbestand aan als normaal
  2. 2. Maak een snelkoppeling naar het batchbestand
  3. 3. Klik met de rechtermuisknop op de snelkoppeling > eigenschappen
  4. Maak een batchbestand aan. 4. Klik op Layout
  5. Vink “Laat systeempositie venster”
  6. Stel de linker positie in tp -1000
  7. Klik op toepassen

    1. Klik op de snelkoppeling en deze wordt uitgevoerd, maar u ziet het niet :)