此命令用于将txt 文件中的OldText1
,OldText2
和 的实例替换为,并且当命令位于批处理文件中的一行时,如下所示:OldText3
NewText1
NewText2
NewText3
start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_) -replace 'OldText1', 'NewText1' -replace 'OldText2', 'NewText2' -replace 'OldText3', 'NewText3' | Set-Content $_.FullName}"
如果我尝试使用该^
符号来拆分命令(通常在批处理文件中有效),它就不起作用。例如,这不起作用,txt 文件中没有任何内容被替换:
start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_) ^
-replace 'OldText1', 'NewText1' ^
-replace 'OldText2', 'NewText2' ^
-replace 'OldText3', 'NewText3' ^
| Set-Content $_.FullName}"
使用反引号也不起作用(但不会因为这不是 PS1 脚本):
start /wait /min Powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "Get-ChildItem 'Old and New text.txt' | ForEach-Object {(Get-Content $_) `
-replace 'OldText1', 'NewText1' `
-replace 'OldText2', 'NewText2' `
-replace 'OldText3', 'NewText3' `
| Set-Content $_.FullName}"
我整个早上都在问那个聊天机器人,但它无法提供任何有用的东西。有一半时间它会再次将命令放在一行上,而我只是绕着它转圈。
做我想做的事是不可能的吗?
我想将命令拆分成多行的原因很简单,因为我希望能够读取正在替换的内容,而不必水平查看(最终会是什么)一个庞大的命令。我打算添加比这更多的替换命令,但它甚至对三个替换命令都不起作用......但是!
提前感谢任何可能知道为什么这不起作用的人。
我不清楚:
这部分建议您将获取文件夹中的项目,准确地说是文件项目,但是您的命令立即定义了一个文件,其中的字符串替换将直接在内容中完成。
看,通过删除该部分,替换项按预期出现,但如果这是针对相同替换项的多个文件,那么我建议编辑问题。虽然令人困惑,但对于内容处理你不需要“
Get-ChildItem 'Old and New text.txt' | ...
”,你可以直接使用Get-Content 'Old and New text.txt' ^|...