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

Uruchom plik wsadowy w całkowicie ukryty sposób

Szukam jakiegoś sposobu na uruchomienie pliku wsadowego (.bat) bez niczego widocznego dla użytkownika (bez okna, bez nazwy paska zadań, .etc.)

Nie chcę używać do tego jakiegoś programu, szukam czegoś czystszego. Znalazłem rozwiązanie , które używa VBScript, ale nie lubię też używać VBS.

Odpowiedzi (23)

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

Rozwiązanie 1:

Zapisz ten jeden wiersz tekstu jako plik invisible.vbs:

CreateObject(“Wscript.Shell”).Run “”“” & WScript. Argumenty(0) & “”“”, 0, Fałszywy

Aby uruchomić dowolny program lub plik wsadowy w niewidoczny sposób, użyj go w następujący sposób:

wscript.exe “C:\"Gdziekolwiek jest niewidoczny.vbs” “C:\"Gdzieś w innym miejscu”“MyBatchFile”. bat"

Aby móc również przekazać/przekazać listę argumentów użyj tylko dwóch cudzysłowów

CreateObject(“Wscript.Shell”).Uruchom “” & WScript. Argumenty(0) & “”, 0, False

Przykład: Invisible.vbs "Kill.vbs ME.exe"

Rozwiązanie 2:

Użyj narzędzia wiersza poleceń do cichego uruchomienia procesu : Quiet , hidecon lub hideexec .

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

Aby ukryć pliki wsadowe, pliki poleceń lub jakiekolwiek pliki… Użyj Windows XP wbudowany w IExpress.exe narzędzie do budowania .EXE z pliku wsadowego. Podczas używania IExpress upewnij się, że zaznaczyłeś opcję run hidden i zaznaczyłeś wszystkie pola o nie pokazywaniu niczego. Po utworzeniu twojego .exe umieszczać ono w cokolwiek uruchamiać katalog poleceń ty wybierać i ty nigdy widzieć ono pojawiać się.

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

use Cmdow is a Win32 commanddline utility for NT4/2000/XP/2003 that allows windows to be listed, moved, resized, renamed, hidden/unhidden, disabled/enabled, minimized, maximized, restored, activated/inactivated, closed, killed and more.

Run a batch file hidden passing it parameters:-

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

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

Jeśli plik wsadowy może zmieścić się w jednej linii i tak wiele znaków, a następnie po prostu użyć skrótu, klikając prawym przyciskiem myszy wewnątrz folderu umieszczonego w losowym katalogu, i przejść przez resztę kreatora, a na koniec kliknij prawym przyciskiem myszy na skrót właśnie utworzony i kliknij właściwości i pod docelowe, wprowadzić to, co zwykle umieścić w pliku nietoperza. I Bobs Twój wujek!

Pros:

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

Wady:

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

Uruchom skrypt w miejscu pracy, nie czyniąc go interaktywnym:

at 11:00 script.bat
  • *

Kolejne rozwiązanie, jeśli nie masz nic przeciwko zainstalowaniu czegoś takiego jak Python, możesz po prostu stworzyć skrypt i uruchomić go za pomocą pythonw (połączona wersja dla operacji GUI). Ponieważ nie używasz żadnych graficznych interfejsów API, okno nie zostanie wyświetlone. Po prostu użyj wywołań do os.system() i będzie on naśladował skrypt wsadowy, ponieważ jest on taki sam jak wpisywanie łańcuchów do linii poleceń.

Przykład:

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

Nie podoba mi się rozwiązanie VBScript.

Pobierz i skopiuj nircmd.exe do folderu %systemroot%\system32, następnie dodaj to polecenie do pierwszej linii wsadu:

nircmd.exe win hide ititle "cmd.exe"

lub najpierw dostosuj tytuł wsadu za pomocą polecenia title, aby uniknąć ukrycia wszystkich okien cmd, w ten sposób:

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

Można go łatwo uruchomić zminimalizować.

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

Używając Windows7, możesz użyć panelu sterowania “Zaplanowane zadanie” do zaplanowania pliku wsadowego do uruchomienia w tle w sposób niewidoczny, z określonymi uprawnieniami, a nawet jako konto “SYSTEM”. Zobacz zrzut ekranu poniżej:

Ponadto, choć nie ma tak wielu możliwości, można również utworzyć niewidoczne zadanie skryptu wsadowego jak to z linii poleceń za pomocą polecenia “AT.exe” bez opcji “/interactive”.

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

Doskonały Bat To Exe Converter skonwertuje twój plik .bat lub .cmd na plik .exe.

Ma prosty UI. Możesz wybrać opcję Exe Format z XX Bit | Windows (Invisible), aby nie mieć okna konsoli. Ponadto, pozwala na przypisanie ikony, ustawienie hasła i kilka innych opcji.

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

Wygląda na to, że ktoś zrobił listę 7-8 sposobów działania “cicho”:

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

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

INNĄ drogą, od C/C+++, jest użycie funkcji CreateProcess z flagą CREATE_NO_WINDOW. Ma ona dużo dodatkowej mocy, której nie pokazano tutaj. To jest tylko minimum, którego potrzebujesz, aby zastąpić system() lub rodzinę _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

Możesz również utworzyć skrypt AutoHotkey :

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

Udało mi się to z nircmd w ten sposób:

  1. pobierz nircmd.exe z link
  2. utwórz swój plik .bat
  3. pierwsza linia pliku .bat musi być następująca: nircmd.exe win hide ititle "cmd.exe"
  4. 5. w zakładce “ogólne” zaznaczyć pole “create autoextract file”
  5. w zakładce “advance” wybrać przycisk “autoextract”
  6. pojawi się nowe okno i wybrać zakładkę “mode” a następnie wybrać opcję: ukryć wszystko"
  7. wybrać zakładkę “update” i wybrać opcję “overwrite existing files”
  8. w zakładce “advance” zaznaczyć pole “autoextract file” i wybrać opcję “autoextract file”. Wybierz zakładkę “ogólne” i zdefiniuj folder docelowy do ekstrakcji, jeśli chcesz i w polu “Excecute after extraction” wpisz pełną ścieżkę, gdzie Twój .bat będzie ekstrahowany. Na przykład: jeśli zdefiniujesz folder ekstrakcyjny jako: c:\“ okna\”, to będzie pełna ścieżka do wydobycia po ekstrakcji: “c:\windows\file.bat” (w przypadku gdy twój .bat nazywa się: file.bat)
  9. kliknij accept na wszystkich oknach

Teraz będziesz miał plik .exe, który po kliknięciu na niego i zainstalowaniu go, twój .bat będzie działał całkowicie ukryty.

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

Dodając moją odpowiedź tutaj z innego postu ponieważ był to duplikat i nie widzę tego rozwiązania tutaj, więc teraz jest 17 różnych odpowiedzi na temat tego jak można uruchomić plik wsadowy ukryty. W najbliższym czasie usunę moją odpowiedź z tego postu.

Stwórz swój skrypt wsadowy z logiką wsadową i poleceniami w nim zawartymi, a następnie utwórz nowy plik z rozszerzeniem .VBS, użyj poniższej logiki (przykład podałem poniżej) i po prostu podłącz pełną ścieżkę do swojego pliku .CMD lub .BAT z rozszerzeniem PING -t <IPAddress>, itd. komendy więc wykonuje wsad w sposób ukryty, nie pokazując okna komend podczas jego wykonywania.

Gdzie logika w poniższym przykładzie określa C:\Folder\BatchFileName.cmd zmienić, że wskazuje na skrypt wsadowy z twoimi komendami jesteś uruchomiony ręcznie, itp. teraz.

Zapisz plik .VBS i zaplanuj go za pomocą Task Scheduler Problemy z harmonogramem zadania w windows7 aby uruchomić go na nieokreślonym harmonogramie dla Twoich potrzeb.

W przeciwnym razie, po prostu kliknij dwukrotnie na plik .VBS aby uruchomić nieskończoną komendę PING, którą umieściłeś w pliku wsadowym, który wskazuje na to, że jest potrzebna.

NOTE: I believe this is where I got this script logic from but it works reliable reliable for the same purpose you need here which is to ensure the command window is hidden when a batch file is run 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
  • Tutaj ** Skompilowałem wszystkie znane mi sposoby, aby rozpocząć ukryty proces z wsadem bez zewnętrznych narzędzi.Z gotowymi skryptami (niektóre z nich są dość bogate w opcje) , a wszystkie tworzą linię poleceń.Gdzie to możliwe, zwracany jest również PID .Używane narzędzia to IEXPRESS,SCHTASKS,WScript.Shell,Win32_Process i JScript.Net
2
2
2
2017-03-09 18:01:08 +0000

Mimo, że już na to odpowiedziałem, to jest inne podejście. Inna polega na tym, że skrypt wsadowy może się sam ukrywać podczas pracy, ale potrzebne są dwa dodatkowe skrypty - windowMode.bat i getCMDPid.bat (oba zawierają kod .net). Oto jak można go użyć:

@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

Nie musisz robić nic specjalnego.

Jeśli uruchamiasz pliki wsadowe z usługi Windows, powinny one być domyślnie ukryte, chyba że włączysz opcję “Pozwól usłudze na interakcję z pulpitem” w usłudze.

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

Musiałem ukryć okno dla pliku wsadowego wywołanego z menu kontekstowego eksploratora, a także dodać cudzysłowy na parametrze. Żadna z odpowiedzi nie zadziałała dla mnie, więc dodaję własne rozwiązanie.

Miałem to w rejestrze “komendę” dla menu kontekstowego eksploratora:

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

Więc aby to zastąpić musiałem stworzyć vbs tak:

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

Zapisz w miejscu takim jak C:\mypath\myscript.vbs i nazwij to tak w rejestrze:

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

Zauważ, że ścieżka .bat nie może mieć spacji, więc zastąp ją nazwą pliku 8.3. Tak więc na przykład C:\Program Files\myprogram.bat musi być nazwany jako C:\Progra~1\myprogram.bat. Aby zobaczyć nazwę pliku 8.3 użyj dir /x

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

Jestem stworzony RunApp aby wykonać taką pracę i użyć jej również w moim środowisku produkcyjnym, mam nadzieję, że to pomoże.

Konfiguracja jak poniżej:

plik: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

i zamiast tego uruchomić runapp.exe.

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

Miałem ten sam problem, ale rozgryzłem go: Shell("filehere" & "parametersforbatchfilehere", vbHidden)

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

Zaczęłam się zastanawiać i nigdy mi się to nie udało. To było tak blisko jak ja:

@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

Działa to dla okien 8 (ewentualnie innych)

  1. Stwórz plik wsadowy jako normalny
  2. Stwórz skrót do pliku wsadowego
  3. Kliknij prawym przyciskiem myszy na skrót > właściwości
  4. Kliknij na Layout
  5. usuń zaznaczenie “Let system position window”
  6. ustaw lewą pozycję tp -1000
  7. kliknij Apply

  8. Kliknij na skrót i będzie działać, ale nie zobaczysz go :)