我在腳本中有以下行:
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