Tôi đang chuyển một số mã cũ từ AutoHotkey 'để cười' và nghĩ rằng tôi đã tình cờ phát hiện ra một tính năng ngoài ý muốn mà nó có...
Tôi muốn có thể làm điều gì đó 'như'
$ws = "Đã thu nhỏ"
$parameters = "/k dir F:\"
bắt đầu quá trình cmd.exe ( $(if($parameters){"-argumentlist $parameters"}) )( $(if ($ws){"-windowystyle $ws"}) )
Nhưng nó không bao giờ 'nối' chúng thành một lệnh 'toàn diện' mà không có Mà còn ném tất cả chúng vào cmd.exe - Ví dụ, tôi ngây thơ hy vọng Powershell có thể 'bắt' chính WindowStyle và thu nhỏ cửa sổ (hiện tại, nó được chuyển thẳng tới cmd.exe mà bỏ qua nó).
Tôi biết tôi hơi điên, nhưng tôi cũng đang cố gắng tìm các thuật ngữ phù hợp để tìm kiếm - about_parsing không hữu ích và hàng tỷ ví dụ về các chuỗi nối cũng không tốt - tôi thực sự muốn Powershell bị lỏng lẻo đủ để cho phép tôi chuyển từ chuỗi sang tham số một cách linh hoạt, điều mà tôi đoán là đi ngược lại quyết định thiết kế có ý thức ở đâu đó...
Vì vậy, giải pháp thay thế là một loạt các câu lệnh if để chứa các hoán vị khác nhau của các tùy chọn...
if ($ws -and -(not $parameters)) {start-process cmd.exe -windowystyle $ws}
if ($parameters -and -(not $ws)) {start-process cmd.exe -argumentlist $parameters}
if ($parameters -and $ws) {bắt đầu xử lý cmd.exe -argumentlist $parameters -windowystyle $ws}
...buồn nôn
Trừ khi ai đó có bất kỳ ý tưởng tốt hơn?