我在脚本中有以下行:
svn propset svn:externals $newExternals $path
现在,第一次$newExternals
是一个多行string(有几个svn:external
属性), svn
以一种似乎表明它不能处理该参数的方式向我咆哮。
我能否将多行string传递给我在PowerShell中调用的程序? 或者是svn
不能parsing的问题? 或者我需要报价? (没有帮助,但我可能搞砸了别的东西。)
如果这不起作用,那么svn
也会接受一个文件来读取这些东西:
svn propset svn:externals -F externals.txt $path
然而,这似乎失败,因为svn
预计externals.txt
是一个ASCII文件(或UTF-8,我不知道,但我不认为这是相关的),而PowerShell默认情况下写入UTF-16。 那么将某些东西转换成ASCII文件的规范方法是什么?
作为一个侧面的问题:什么是规范的方式来创build一个临时文件的path?
[io.path] :: GetTempFileName()将返回一个临时文件名(包括path)
我不太熟悉svn
,所以如果以下几点不相关的话,请原谅我… …但是可以将多行string传递到Powershell或Powershell调用的程序(假定调用的程序支持它)。
从Technet的Windows PowerShell本周提示,这里有一个特别喜欢的方法 。 (Powershell'Here-Strings`)。
还有另外一个来自SO的答案 ,尽pipe我不知道这是否可以与被调用的程序一起工作,只是它在PowerShell中本地工作。
最后,string(所有types)也可以延伸到一行之外:
'Foo bar'
如果两种技术都不起作用,我会说你遇到了svn
的限制。
在Windows上,可以使用系统variablesTEMP或TMPfind用户临时文件夹。
[Batch] echo %TEMP% echo %TMP% [Powershell] echo $env.temp echo $env.tmp