将文件名替换为Windows中文件中的文件内容

时间:2016-09-23 04:09:48

标签: windows command-line scripting text-files

我有一个文本文件,我在其中引用了其他文件。我想要做的是运行一个脚本,它将在运行时用文件的内容替换文件名,然后将其卷曲到服务器。

有人建议使用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>"
      }
    }]

1 个答案:

答案 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别名不会尝试以相同的方式运行。