我可以在 PowerShell 中將多行字串傳遞給 svn 嗎?

我可以在 PowerShell 中將多行字串傳遞給 svn 嗎?

我在腳本中有以下行:

svn propset svn:externals $newExternals $path

現在第一次$newExternals是一個多行字串(有幾個svn:external屬性),並且svn以一種似乎表明它無法處理參數的方式對我咆哮。

我無法將多行字串傳遞給我在 PowerShell 中呼叫的程式嗎?或者這是一個svn無法解析的問題?或我需要報價嗎? (沒有幫助,但我可能搞砸了其他事情。)


如果這不起作用,那麼svn還會接受一個檔案來讀取內容:

svn propset svn:externals -F externals.txt $path

然而,這似乎失敗了,因為svn期望externals.txt是一個 ASCII 檔案(或 UTF-8,我不確定,但我認為它與這裡無關),而 PowerShell 預設會寫入 UTF-16。那麼將某些內容透過管道傳輸到 ASCII 檔案的規範方法是什麼?


作為一個附帶問題:獲取創建臨時文件的路徑的規範方法是什麼?

答案1

[io.path]::GetTempFileName() 將傳回暫存檔案名稱(包括路徑)

答案2

我不太熟悉svn,所以如果以下內容不相關,請原諒我...但是您當然可以將多行字串傳遞到 Powershell 或 Powershell 呼叫的程式中(假設調用的程式支援它)。

這是我特別喜歡的方法,來自 Technet Windows Powershell Tip of the Week。 (Powershell“此處字串”)。

這是另一個來自 SO 的答案,雖然我不知道這是否適用於調用的程式...只是它在 PowerShell 中本機工作。

最後,字串(所有變體)也可以超出單行:

'Foo
bar'

如果這兩種技術都不起作用,我想說你已經遇到了svn.

答案3

在 Windows 上,可以使用系統變數 TEMP 或 TMP 找到使用者暫存資料夾。

[Batch]
echo %TEMP%
echo %TMP%

[Powershell]
echo $env.temp
echo $env.tmp

相關內容