2012-09-01 29 views
5

Tôi có một kịch bản thực thi mà mất bất kỳ số lượng đối số (danh sách các file) và thực hiện một kịch bản PowerShell với cấu trúc lệnh sau:

"%POWERSHELL%" -Command "%SCRIPT%" %*

%POWERSHELL% là đường dẫn đến PowerShell.exe, và %SCRIPT% là kịch bản PowerShell tôi mà giải thích rằng nhận %* như $args. Vấn đề là nếu tôi chuyển vào một cái gì đó như tên tập tin test$file.name, PowerShell sẽ nhận được test.name, có lẽ vì $file được hiểu là một biến trống.

Có cách nào tốt để thoát khỏi mỗi đối số bằng dấu ngoặc kép hoặc dấu gạch chéo ngược từ tập lệnh lô hay xử lý bằng cách khác không?

Trả lời

5

Thoát ký tự $ trước khi bạn chuyển% * sang tập lệnh PowerShell.

set ARGS=%* 
set ARGS=%ARGS:$=`$% 
"%POWERSHELL%" -Command "%SCRIPT%" %ARGS% 
+0

Hoạt động như một nét duyên dáng - Tôi không biết gì về ký hiệu dấu hai chấm đó! –

+0

Cà rốt có còn hoạt động không? hoặc là trích dẫn bên trái một nhân vật đặc biệt trong PowerShell? –

+2

@ hayk.mart: '% VAR: S1 = S2%' thay thế chuỗi trong các biến, xem 'bộ trợ giúp' để biết thêm chi tiết. –

Các vấn đề liên quan