在批处理文件中,我需要在文件中更改## token ##(只是我自己的占位符)的所有实例,其中包含脚本中早期变量的值(%tokenvar%),并输出结果到一个文件。从这里的答案我想出了PowerShell:
type file.json|powershell -Command "$input|ForEach-Object{ $_ -replace \"##token##\", \"%tokenvar%\" }" > file.2.json
问题是生成的文件被包裹在80个字符中,我不需要它!
我该怎么做?
答案 0 :(得分:1)
在这种情况下您不需要使用Out-String
,因为Out-File
也有Width
参数:
... | Out-File File.2.json -Width 300"
确保| Out-File ...
是PowerShell命令的一部分。
答案 1 :(得分:1)
问题是PowerShell(>)中的重定向操作符将变为Out-File,宽度为80个字符。您可以使用具有任意大宽度的Out-File(我更喜欢10k),或管道设置内容(这将更慢)。您还可以将结果分配给变量,并使用[IO.File] :: WriteAllText执行更新。
答案 2 :(得分:0)
您可以直接在批处理文件中执行此操作,而无需使用Powershell:
@echo off
setlocal DisableDelayedExpansion
for /F "delims=" %%a in (file.json) do (
set "line=%%a"
setlocal EnableDelayedExpansion
echo !line:##token##=%tokenvar%!
endlocal
)
此批处理文件假设file.json
中没有空行,并且%tokenvar%
的值没有特殊的批处理字符。如果需要,这两点可以修复。