2013-06-18 7 views
5

मैं बैशWindows cmd में कमांड तर्क के रूप में फ़ाइल सामग्री को कैसे पास करें?

kill -9 `cat pid.txt` 
Windows में

की तरह कुछ करना चाहते हैं। मैं

set /p mypid= < pid.txt && taskkill /f /pid %mypid% 

कोशिश की, लेकिन यह काम नहीं करता है, जैसे %mypid%taskkill की क्रियान्वित करने के बाद सौंपा हो जाता है लग रहा है।

यह कैसे करें? (मैं इस कमांड को एनएसआईएस इंस्टॉल स्क्रिप्ट से कॉल करने जा रहा हूं, इसलिए मैं इसके लिए अलग .bat फ़ाइल नहीं बनाना चाहता हूं)।

+1

विंडोज मंच लिनक्स/यूनिक्स दुनिया पर आम कई तंत्र का अभाव है। आप प्रक्रिया को खंडित करने का प्रयास कर सकते हैं: 1) पिड फ़ाइल पढ़ें और 2) इसे 'टास्ककिल' – Seki

उत्तर

6

मुझे यकीन है कि क्या pid.txt की सामग्री हैं नहीं कर रहा हूँ, लेकिन यह अपने आप में सिर्फ पीआईडी ​​है यह सोचते हैं, तो आप ऐसा कर सकते हैं:

for /f %%x in (pid.txt) do taskkill /f /pid %%x 

आप चला रहे हैं कि कमांड लाइन से, और बैच फ़ाइल के हिस्से के रूप में नहीं, %%x को %x के साथ बदलें।

यदि यह pid.txt में नहीं है, तो कृपया उस बिंदु पर स्पष्ट होने के लिए अपना प्रश्न संपादित करें।

+0

पर पास करें। 'Pid.txt' सिर्फ पीआईडी ​​है। लेकिन जब मैंने इसे चलाने की कोशिश की, तो विंडोज़ ने सिर्फ मेरे लिए 'pid.txt' के साथ नोटपैड निष्पादित किया। –

+0

बकाया! मुझे नहीं पता था कि विंडोज बैच फाइलें ऐसा कर सकती हैं! धन्यवाद। – codeplumber

1

निम्न स्क्रिप्ट कर रहा है कि आप क्या उम्मीद, एक खोल सुविधा के आधार पर बिना:

OutFile "kill.exe" 

Var pid 
!define filename "pid.txt" 

Section 

    ClearErrors 
    FileOpen $0 "${filename}" r 
    IfErrors 0 readok 
    DetailPrint "Error to open ${filename}" 
    goto done 
    readok: 
    FileRead $0 $pid 
    DetailPrint "pid found=$pid" 
    FileClose $0 

    ExecWait 'taskkill /F /PID $pid' 
    done: 

SectionEnd 
संबंधित मुद्दे