我可以在 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 本周小贴士. (Powershell‘Here-Strings’)。

这是另一个,来自 SO 答案,虽然我不知道这是否可以与调用的程序一起工作......只是它在 PowerShell 中本地工作。

最后,字符串(所有种类)也可能超出单行:

'Foo
bar'

如果这两种技术都不起作用,我想说您已经遇到了限制svn

答案3

在 Windows 上,可以使用系统变量 TEMP 或 TMP 找到用户临时文件夹。

[Batch]
echo %TEMP%
echo %TMP%

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

相关内容