2015-07-01 97 views
0

如何使我的變量末尾添加了擴展的工作?PowerShell - 帶擴展名的調用變量

Get-ChildItem -Path $directoryPath*.pdf -Recurse -Force | 

下面的答案固定後,我現在有:

Get-ChildItem -Path $($directoryPath)*.pdf -Recurse -Force | 
ForEach-Object { 
    $newname = "${input}_{0}.pdf" -f $i 
    $i++ 
Rename-Item -Path $_.FullName -NewName $newname 
} 
+0

你有什麼問題嗎?對我來說工作很好 – arco444

回答

1
Get-ChildItem -Path "$($directoryPath)*.pdf" -Recurse -Force | 

應該做的。

如果您需要使用字符串連接變量名稱,或者需要在字符串中輸入表達式,請使用$(expression)語法。

+0

如果對象只是一個字符串,那麼不是絕對必要的。訪問對象屬性時必須使用此參數,但默認情況下,任何普通字符串變量都應該插值​​。然而,出於可讀性的原因,在實踐中不要不同意這一點。 – arco444

+0

@ arco444事實上,如果一個對象正確地實現'toString()','$($ variable)'將返回一個期望的值。如果沒有,程序員將不得不指定一個屬性或方法來返回所需的字符串。對我來說最接近的例子是'PSCredential',如果像這樣填充它就會產生一個類名,相反,你可以編寫'$($ cred.username)'來獲得可訪問的數據。 – Vesper

+0

我想說的是,在你的回答中,「$($ directoryPath)*。pdf」與「$ directoryPath * .pdf」相同,即括號在這裏不需要 – arco444