2013-06-18 10 views
5

Ben Windows Dosya içeriği Windows cmd'de bir komut argümanı olarak nasıl aktarılır?

kill -9 `cat pid.txt` 

bash

gibi bir şey yapmak istiyorum. Ben
set /p mypid= < pid.txt && taskkill /f /pid %mypid% 

çalıştı ama çalışmıyor, %mypid% taskkill ait yürüttükten sonra atanan olur gibi görünüyor.

Nasıl yapmalı? (Bu komutu NSIS yükleme komut dosyasından arayacağım, bu yüzden bunun için ayrı bir .bat dosyası yapmak istemiyorum).

+1

, Windows platformu Linux/Unix dünya üzerinde yaygın bir kaç mekanizmalardan yoksun. İşlemi parçalamaya çalışabilirsiniz: 1) pid dosyasını okuyun ve 2) 'taskkill' – Seki

cevap

6

Ben pid.txt içeriği ne olduğundan emin değilim, ama kendi başına sadece PID olduğunu varsayarak, bunu yapabilirdi:

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

yenisini çalıştırıyorsanız bu komut satırından, ve bir toplu iş dosyasının parçası olarak, %%x'u %x ile değiştirin.

Eğer pid.txt dosyasında bu yoksa, lütfen o noktada daha açık olması için sorunuzunuzu düzenleyin.

+0

' a iletin. Pid.txt, sadece PID’dir. Ama çalıştırmayı denediğimde, Windows sadece benim için pid.txt ile notepad çalıştı. –

+0

Üstün! Windows toplu iş dosyaları bunu yapabileceğini hiç bilmiyordum! Teşekkürler. – codeplumber

1

Aşağıdaki komut dosyası bir kabuk özelliğine bağlı olmadan, beklediğiniz yapıyor:

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 
İlgili konular