我有一个文本文件,我在其中引用了其他文件。我想要做的是运行一个脚本,它将在运行时用文件的内容替换文件名,然后将其卷曲到服务器。
有人建议使用PowerShell或类似命令在Windows命令行上快速完成此操作吗?
e.g。
"responses": [
{
"is": {
"statusCode": 200,
"headers": {
"Location": "http://localhost:4545/myresponse",
"Content-Type": "application/xml"
},
"body": "@file:myresponse.xml"
}
}]
会变成:
"responses": [
{
"is": {
"statusCode": 200,
"headers": {
"Location": "http://localhost:4545/myresponse",
"Content-Type": "application/xml"
},
"body": "<xml> contents of myresponse.xml within same directory.. </xml>"
}
}]
答案 0 :(得分:1)
您可以在PowerShell中使用以下内容执行此操作:
$template = Get-Content template.txt -Raw
$template = [regex]::Replace($template, '(@file:.*?)(?=")', {param($f) Get-Content ($f -replace '@file:') -Raw }))
Invoke-WebRequest -Uri 'http://example.org/' -ContentType 'application/json' -Method Post -Body $template
....取决于您设置的所有细节。
正则表达式替换将@file:
位选择到以下"
并删除前导位。这些匹配被输入到scriptblock中,该块用于加载文件内容并替换回来代替文件名。
如果你想实际 curl
它,你需要一个由curl.exe
构建的Windows。同名的PowerShell别名不会尝试以相同的方式运行。