อะนาล็อก Windows $ 1 (PID ของกระบวนการเริ่มต้นล่าสุด)


3

วิธีรับ Windows PID ของกระบวนการเริ่มต้นล่าสุดโดยใช้ WScript.Shell หรือคล้ายกัน

ฉันรู้วิธีเริ่มกระบวนการและรับ PID ของมัน:

Set oExec = WshShell.Exec( program )
Set pid = oExec.ProcessID

ตอนนี้ปัญหาคือโปรแกรมเป็นชุดอื่น (หรืออาจเป็น VBScript) ชุดเริ่มโปรแกรมจริงซึ่ง PID ฉันต้องการได้รับ

บน Linux (เชลล์สคริปต์) มันง่ายมากที่จะทำ เพียงแค่pid=$!

แต่ฉันจะทำอะไรได้บ้างบน Windows


ทำไมไม่คืนค่า PID กลับเป็นค่าส่งคืน (หรือส่งไปที่ stdout) โดยใช้ VBScript
พัฒนา

ขอบคุณ ฉันคิดว่าค่าส่งคืน จำกัด อยู่ที่ 256 แต่ดูเหมือนว่าวิธีเดียว (ด้วยความพยายามอย่างสมเหตุสมผล) คือการอ่าน stdout ใน VBScript ผมคิดว่าผมสามารถใช้oExec.StdOutคุณสมบัติ แต่ไม่เคยพยายามมันเพื่อให้ห่างไกล ...
Dime

คำตอบ:


3

ฉันคิดว่ามันไม่เทียบเท่ากับ $! ใน Windows

ในกรณีที่คุณต้องการดึงข้อมูล PID ของกระบวนการที่สามคุณสามารถค้นหาโดยใช้ WMI ตัวอย่างของสิ่งนี้สามารถพบได้ที่นี่ (เพียงค้นหาและแสดงข้อมูล) หรือที่นี่ (ค้นหาและฆ่ากระบวนการ)

หากไม่รู้จักปฏิบัติการของชื่อที่สามคุณอาจต้องการใช้งานวัตถุซึ่งจัดกลุ่มกระบวนการหลายอย่างไว้ในวัตถุเดียว และคุณสามารถจะฆ่าพวกเขาทั้งหมดในครั้งเดียวกับTerminateJobObject

ดูMSDNสำหรับภาพรวมอย่างรวดเร็วหรือคำถามนี้ใน StackOverflow

อย่างไรก็ตามฉันไม่รู้ว่าวิธีการเหล่านี้สามารถใช้ได้จาก VBScript หรือไม่


ไม่สามารถลงคะแนนได้ :( ชื่อเสียงไม่เพียงพอ
Dime

ทำเมื่อคุณมีตัวแทนเพียงพอ - ล้อเล่นไม่ใช่ปัญหา หากข้อมูลนั้นมีประโยชน์นั่นก็เพียงพอแล้วสำหรับฉัน
Tex Hex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.