BAT 或 Powershell For 循环通过 CSV 构建 URL

BAT or Powershell For loop through CSV to build a URL

已解决。所以我第一次尝试这个 post 是一个结构非常糟糕的问题,试图以非常糟糕的方式混淆专有公司信息,并且没有很好地提出问题。

一旦沃尔特甚至让我朝着正确的方向思考,我就解决了这个问题。下面是我 运行 进入的第二个问题,发现 @{key=value} 语句被传递到我的 url 因为出于某种原因我的脚本不喜欢 header我的 csv 文件。事后看来,也许是因为我将我的变量命名为与 header 相同的名称。不管怎样,我只是通过使用 Get-Content 而不是 Import-CSV.

来解决它
    $aliases = Import-Csv -Path .\aliases.csv

    foreach ($alias in $aliases) {
        Write-Output ('http://www.' + $($alias) + '.mydomain.com') >> urls.txt

其中 aliases.csv 的内容是:

    alias
    Matthew
    Mable
    Mark
    Mary

这给了我:

    http://www.@{alias=Matthew}.mydomain.com
    http://www.@{alias=Mable}.mydomain.com
    http://www.@{alias=Mark}.mydomain.com
    http://www.@{alias=Mary}.mydomain.com

成功时urls.txt应该包含:

    http://www.Matthew.mydomain.com
    http://www.Mable.mydomain.com
    http://www.Mark.mydomain.com
    http://www.Mary.mydomain.com

注意:已编辑以阐明用例

在 Powershell 中

Get-Content names.txt | %{"Hello, my name is $_. How are you?"}  >> results.txt

顺便说一句,只要多花点功夫,您就可以从一个csv文件中读取多个变量,并将它们全部替换为文本中的命名变量。事实证明,这在各种情况下都非常有用。

编辑以符合您的编辑

Import-csv ./aliases.csv | %{ "http://www.$($_.alias).mydomain.com"}

备注:

  1. 一旦您习惯了它们,管道就是处理几乎所有内容的流的最简单方法。

  2. % 是 Foreach-Object 的缩写(不要与 foreach 混淆)。

  3. 对于从管道中出来的每个对象,循环将完成一次。每个对象都是一个 PSCustomObject,带有一个 属性 命名别名。

  4. $() 允许计算双引号字符串中的子表达式。

  5. $_是当前对象。

  6. 在此上下文中,点将指定的对象与命名的 属性.

    分开