ทำไม เริ่มต้นกระบวนการ
ไม่พบไฟล์เรียกทำงาน (ไม่ได้อยู่ในเส้นทาง) ถ้า -RedirectStandardOutput
หรือ -RedirectStandardError
ระบุ?
เช่น.
[X:\] เริ่มกระบวนการ -FilePath "prog.exe" -WorkingDirectory (รับตำแหน่ง) เส้นทาง
โปรแกรมเริ่มต้นและดำเนินการตามที่ควร แต่เมื่อฉันเพิ่มการเปลี่ยนเส้นทางเอาต์พุต ทุกอย่างจะแตกสลาย:
[X:\] เริ่มกระบวนการ -FilePath "prog.exe" -WorkingDirectory (รับตำแหน่ง) เส้นทาง -RedirectStandardOutput stdout.txt
เริ่มกระบวนการ: ไม่สามารถเรียกใช้คำสั่งนี้ได้เนื่องจากข้อผิดพลาด: ระบบไม่พบไฟล์ที่ระบุ
เปลี่ยนเส้นทางด้วย 1>stdout.txt
ตัวดำเนินการทำงานตามที่คาดไว้
ดูเหมือนว่าจะไม่ส่งผลกระทบต่อโปรแกรมที่อยู่ในไดเร็กทอรีที่อยู่ในรายการ เส้นทาง
. ฉันคิดไม่ออกจริงๆ ว่าตรรกะตรงนี้คืออะไร การเปลี่ยนเส้นทางไม่ควรเกี่ยวข้องกับการแก้ไขเส้นทางไบนารีตั้งแต่แรก
ทำงานบน Windows 10 Professional
อัปเดต: การติดตามแบบเต็มและตัวสร้างซ้ำอย่างง่าย
PS> แมว .\hello.c
#รวม <stdio.h>
int main (int argc, ถ่าน** argv)
{
printf("เมห์\n");
getchar();
กลับ 0;
}
PS> cl สวัสดีค
Microsoft (R) C/C++ การเพิ่มประสิทธิภาพคอมไพเลอร์เวอร์ชัน 19.29.30138 สำหรับ x86
ลิขสิทธิ์ (C) Microsoft Corporation. สงวนลิขสิทธิ์.
สวัสดีซี
Microsoft (R) Incremental Linker เวอร์ชัน 14.29.30138.0
ลิขสิทธิ์ (C) Microsoft Corporation. สงวนลิขสิทธิ์.
/ออก:hello.exe
สวัสดี obj
PS> เริ่มกระบวนการ -FilePath hello.exe -WorkingDirectory (รับตำแหน่ง) เส้นทาง
PS> เริ่มกระบวนการ -FilePath hello.exe -WorkingDirectory (รับตำแหน่ง) เส้นทาง -RedirectStandardOutput stdout.txt
เริ่มกระบวนการ: ไม่สามารถเรียกใช้คำสั่งนี้ได้เนื่องจากข้อผิดพลาด: ระบบไม่พบไฟล์ที่ระบุ
ที่บรรทัด:1 ตัวอักษร:1
+ Start-Process -FilePath hello.exe -WorkingDirectory (Get-Location).Pa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [เริ่มกระบวนการ], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
อัปเดต 2:
ดูเหมือนว่าการใช้เส้นทางสัมบูรณ์สำหรับไฟล์ปฏิบัติการเป็นวิธีแก้ปัญหา (แม้ว่าจะไม่ได้อธิบายว่าเหตุใดทิศทางเอาต์พุตจึงแบ่งการแก้ไขชื่อ/เส้นทางที่เรียกใช้งานได้ในตอนแรก)