好的,有人建议我开始一个新问题,因为我原来的问题已经解决,但我还有另一个问题属于我之前的问题。
我的第一个问题是我想用双引号在txt文件中写文本。那就解决了。我的下一个问题是如何使用Add-Content -Value
中的多个参数?
以下是一个例子:
Add-Content -Value '"C:\Program Files (x86)\Fraunhofer IIS\easyDCP Creator+\bin\easyDCP Creator+.exe" "-i C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\$title.txt" "-o" "C:\Users\Administrator\Desktop\output_dcp\$title"'
在这种情况下,参数$ title代表我正在处理的视频片段的标题,当我正在处理它时我不知道标题,这就是我使用此参数的原因。但是当我运行我的脚本时,power-shell完全忽略了我的参数。所以我在参数周围用单引号再次尝试了它,例如:
... "-i C:\Users\Administrator\Desktop\dcp_bearbeitet\'$title'\'$title'.txt"
...
然后power-shell甚至不执行我的脚本。那么也许有人知道我如何处理Add-Content -Value中的参数?
答案 0 :(得分:0)
您有两个相互竞争的要求:
一种方法是使用here-string,即@“...”@来分隔字符串而不是仅使用普通引号:
$value = @"
"C:\Program Files (x86)\Fraunhofer IIS\easyDCP Creator+\bin\easyDCP Creator+.exe" -i "C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\$title.txt" -o "C:\Users\Administrator\Desktop\output_dcp\$title"
"@
Add-Content -Value $value
这对你有用。我将它从Add-Content
中分离出来并不是因为它不会就地工作,而是因为一次做一件事情的混淆的可能性较小。此外,如果您单独构建值,则可以添加临时Write-Host $value
以快速检查您是否具有完全符合您想要的字符串。
另一种方法是简单地转义所附的引号:
$value = "`"C:\Program Files (x86)\Fraunhofer IIS\easyDCP Creator+\bin\easyDCP Creator+.exe`" -i `"C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\$title.txt`" -o `"C:\Users\Administrator\Desktop\output_dcp\$title`""
Add-Content -Value $value
但这确实很混乱。
其他选项是在小块中构建字符串,或者在字符串中使用不同的字符而不是双引号,然后执行替换以将它们变成引号,但这些中的任何一个都很混乱。我会选择“here-string”解决方案。
答案 1 :(得分:0)
您可以将数组传递到Add-Content
。
$string_array = @(
"`n",
"line1",
"line2",
"line3",
'"line4"',
"li`"ne`"5"
)
$string_array | Add-Content file.ext
参数-Value
也可以直接采用数组:
Add-Content -path cake.txt -value @('some "stuff"',"more `"backticked`" stuff","hello world")