मैं सक्रिय उपयोगकर्ता के साथ बातचीत किए बिना, पृष्ठभूमि में एक विंडोज़ कमांड लाइन कैसे निष्पादित कर सकता हूं?
मैं सक्रिय उपयोगकर्ता के साथ बातचीत किए बिना, पृष्ठभूमि में एक विंडोज़ कमांड लाइन कैसे निष्पादित कर सकता हूं?
जवाबों:
आपका प्रश्न बहुत अस्पष्ट है, लेकिन सर्वरफॉल्ट पर एक पोस्ट है जिसमें आपको आवश्यक जानकारी हो सकती है। वहाँ जवाब में बताया गया है कि एक बैच फ़ाइल विंडो को कैसे चलाना है:
आप इसके बजाय Windows स्क्रिप्ट फ़ाइल का उपयोग करके चुपचाप चला सकते हैं। रन विधि आपको अदृश्य मोड में स्क्रिप्ट चलाने की अनुमति देती है।
.vbsइस तरह एक फ़ाइल बनाएँDim WinScriptHost Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0 Set WinScriptHost = Nothingऔर इसे शेड्यूल करें। इस उदाहरण में दूसरा तर्क विंडो शैली सेट करता है। 0 का अर्थ है "खिड़की छिपाएं।"
यह थोड़ी देर है, लेकिन मैं खुद इस सवाल का जवाब खोजते हुए भाग गया और मुझे यह पता चला:
START /B program
जो, विंडोज पर, लिनक्स कमांड के सबसे नजदीक है:
program &
कंसोल की मदद से सिस्टम:
C:\>HELP START
Starts a separate window to run a specified program or command.
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
[command/program] [parameters]
"title" Title to display in window title bar.
path Starting directory.
B Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application.
एक समस्या जो मैंने इसके साथ देखी वह यह है कि आपके पास कंसोल विंडो पर लिखने का एक से अधिक प्रोग्राम है, यह थोड़ा भ्रमित और गड़बड़ हो जाता है।
इसे उपयोगकर्ता के साथ इंटरैक्ट नहीं करने के लिए, आप आउटपुट को किसी फ़ाइल में रीडायरेक्ट कर सकते हैं:
START /B program > somefile.txt
start /B "" programतो यह काम किया ...
मुझे संदेह है कि आपका मतलब है: पृष्ठभूमि में कुछ चलाएं और लॉन्च किए गए प्रोग्राम को जारी रखने के साथ कमांड लाइन को तुरंत वापस लें।
START "" program
जो यूनिक्स के बराबर है
program &
start? यह इसके बिना काम नहीं करता है (सिर्फ एक नया कमांड उदाहरण निष्पादित करता है), लेकिन startइसके बारे में कुछ भी कहने में मदद नहीं करता है, यह बताता है कि सभी पैरामीटर वैकल्पिक हैं (या मुझे यह समझ में नहीं आता है)।
startमेरे लिए खाली पैरामीटर के बिना काम करता है, लेकिन मुझे लगता है कि जब मैं खाली पैरामीटर का उपयोग नहीं करता हूं तो एक अलग कॉन्फ़िगरेशन के साथ एक गोले मिलते हैं, एक सेटिंग के रूप में मैंने किया था जब मेरे पास खाली पैरामीटर का उपयोग नहीं किया जाता है जब मैं उपयोग नहीं करता हूं खाली पैरामीटर। मुझे आश्चर्य है कि वे अलग-अलग कॉन्फ़िगरेशन का उपयोग क्यों करते हैं?
START "" programमेरे लिए एक नए टर्मिनल में एक कमांड शुरू करता है, जबकि program &यूनिक्स में कमांड चलाता है और आउटपुट को उसी टर्मिनल पर प्रिंट करता है।
आप इसका उपयोग कर सकते हैं (टिप्पणी!) PowerShell स्क्रिप्ट:
# Create the .NET objects
$psi = New-Object System.Diagnostics.ProcessStartInfo
$newproc = New-Object System.Diagnostics.Process
# Basic stuff, process name and arguments
$psi.FileName = $args[0]
$psi.Arguments = $args[1]
# Hide any window it might try to create
$psi.CreateNoWindow = $true
$psi.WindowStyle = 'Hidden'
# Set up and start the process
$newproc.StartInfo = $psi
$newproc.Start()
# Return the process object to the caller
$newproc
इसे एक .ps1फ़ाइल के रूप में सहेजें । स्क्रिप्ट निष्पादन को सक्षम करने के बाद ( PowerShell टैग विकी में स्क्रिप्ट्स को सक्षम करना देखें ), आप इसे एक या दो तार पास कर सकते हैं: निष्पादन योग्य का नाम और वैकल्पिक रूप से तर्क लाइन। उदाहरण के लिए:
.\hideproc.ps1 'sc' 'stop SomeService'
मैं पुष्टि करता हूं कि यह विंडोज 10 पर काम करता है।
यदि आप चाहते हैं कि कमांड-लाइन प्रोग्राम उपयोगकर्ता के बिना भी इसके बारे में जाने के बिना चलाए, तो इसे विंडोज सेवा के रूप में परिभाषित करें और यह एक समय पर चलेगा।
schtasksविंडोज़ एक्सपी और इसके बाद के संस्करण में कमांड का उपयोग करें (चेतावनी: schtasksजटिल है)।
2 उदाहरणों के साथ एक संबंधित जवाब:
कॉल START / B "मेरा कैल्क" "calc.exe"
START / MIN को "मेरा मोंगॉड" कहें "% ProgramFiles% \ MongoDB \ Server \ 3.4 \ bin \ modod.exe"
call Start /MIN "c" "calc.exe"
SW_*को पारित कर सकते हैं । CreateProcessWSTARTUPINFO::wShowWindowSW_HIDE
आप इस लिंक में ऐसा करने का सही तरीका देख सकते हैं:
कमांड विंडो के बिना एक अनुसूचित कार्य को चलाने के लिए
संक्षेप में, आपको 'भागो चाहे उपयोगकर्ता लॉग ऑन हो या नहीं' के लिए चेकबॉक्स है। टास्क यूजर क्रेडेंशियल्स को 'ओके' दबाने के बाद दर्ज किया जाना चाहिए।
बस इस थ्रेड विंडो 7 के पार आया, पावर शेल का उपयोग करके, पृष्ठभूमि में निष्पादन योग्य चलाता है, ठीक उसी तरह जैसे कि यूनिक्स फ़ाइल नाम और
उदाहरण: शुरू -NoNewWindow फ़ाइल नाम
मदद शुरू करें
NAME प्रारंभ-प्रक्रिया
SYNTAX स्टार्ट-प्रोसेस [-FilePath] [[-ArgumentList]] [-Credential] [-वार्किंगडायरेक्टरी] [-LadUserProfile] [-NoNewWebow] [-PassThru] [-RedirectStandardError] [-RirectirectStandard_putproput-put-project] [-WindowStyle {सामान्य | छिपा हुआ | कम से कम | मैक्सिमाइज़}] [-UseNewEnvironment] []
Start-Process [-FilePath] <string> [[-ArgumentList] <string[]>] [-WorkingDirectory <string>] [-PassThru] [-Verb
<string>] [-Wait] [-WindowStyle <ProcessWindowStyle> {Normal | Hidden | Minimized | Maximized}]
[<CommonParameters>]
ALIASES की शुरुआत होती है