我在脚本中有以下一行:
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 本周小贴士. (Powershell‘Here-Strings’)。
这是另一个,来自 SO 答案,虽然我不知道这是否可以与调用的程序一起工作......只是它在 PowerShell 中本地工作。
最后,字符串(所有种类)也可能超出单行:
'Foo
bar'
如果这两种技术都不起作用,我想说您已经遇到了限制svn
。
答案3
在 Windows 上,可以使用系统变量 TEMP 或 TMP 找到用户临时文件夹。
[Batch]
echo %TEMP%
echo %TMP%
[Powershell]
echo $env.temp
echo $env.tmp