2011-01-29 38 views

Trả lời

29
$a=get-content a.txt 
$suffix="tableA" 

$ExecutionContext.InvokeCommand.ExpandString($a) 
+2

Chỉ cần lưu ý rằng nếu $ a chứa chuỗi được trích dẫn (ví dụ: $ a = 'delete from "test_ $ suffix"'), bạn sẽ mất dấu ngoặc kép khi được mở rộng. – mjolinor

+1

Điều đó đúng. Cùng đi cho các dấu hiệu $. Bạn có thể thoát chúng bằng một dấu tích '. Ngoài ra, kỹ thuật chuỗi ở đây chỉ cho phép các dòng nhận dạng PowerShell. Tôi không thể có 'Đây là văn bản' trong tệp (không có dấu ngoặc kép). Việc kích hoạt tính năng này rất hữu ích khi thực hiện các ứng dụng kiểu templating. –

+0

Tôi không hiểu phần này: "Ngoài ra, kỹ thuật chuỗi ở đây chỉ cho phép các dòng PowerShell dễ nhận biết. Tôi không thể có 'Đây là văn bản' trong tệp (không có dấu ngoặc kép). Việc bật tính năng này hữu ích khi thực hiện các ứng dụng kiểu templating. " http://mjolinor.wordpress.com/2011/02/02/here-string-test/ – mjolinor

1

Đây là một cách. Các biến trong chuỗi kép được trích dẫn ở đây được thay thế tự động. Chỉ cần chắc chắn rằng tệp đầu vào của bạn tuân theo các quy tắc PS cho các chuỗi tại đây.

function convertto-herestring { 
begin {$temp_h_string = '@"' + "`n"} 
process {$temp_h_string += $_ + "`n"} 
end { 
    $temp_h_string += '"@' 
    iex $temp_h_string 
    } 
} 

$suffix = "tableA" 

get-content testfile.txt 

delete from test_$suffix 

get-content testfile.txt | convertto-herestring 

delete from test_tableA 
Các vấn đề liên quan