У меня в скрипте есть следующая строка:
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?
В качестве побочного вопроса: каков канонический способ получить путь для создания временного файла?
[io.path] :: GetTempFileName () вернет временное имя файла (включая путь)
Я не так хорошо знаком с svn
, так что извините, если следующее не имеет отношения ... но вы, безусловно, можете передавать многострочные строки в Powershell или вызываемую программу Powershell (при условии, что вызываемая программа поддерживает это).
Вот один из способов, который мне особенно нравится, из Совет недели Technet Windows Powershell.. (Powershell 'Here-Strings').
А вот еще один из ТАК-ответа, хотя я понятия не имею, будет ли это работать с запущенной программой ... просто это работает изначально в PowerShell.
Наконец, строки (во всех вариантах) также могут выходить за пределы одной строки:
'Foo
bar'
Если ни один из методов не работает, я бы сказал, что вы столкнулись с ограничением svn
.
В Windows временную папку пользователя можно найти с помощью системной переменной TEMP или TMP.
[Batch]
echo %TEMP%
echo %TMP%
[Powershell]
echo $env.temp
echo $env.tmp