从txt文件中读取值以与copy-item一起使用

时间:2017-05-12 15:49:29

标签: powershell

请给我一些帮助,我有一个config.txt的文本文件,其中包含以下值

[Paths]
Sourcepath="y:\enterprise\team\input"
TempPath="y:\enterprise\team\temp"
DestPath="y:\enterprise\team\Output"

我希望有一个脚本从配置文件中读取并从一个目标移动任何文件并将其复制到下一个目标

copy-item 'sourcepath' destination = temppath

PowerShell新手,所以任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

Use PowerShell to Work with Any INI File

您可以使用此功能。

function Get-IniContent ($filePath)
{
    $ini = @{}
    switch -regex -file $FilePath
    {
        “^\[(.+)\]” # Section
        {
            $section = $matches[1]
            $ini[$section] = @{}
            $CommentCount = 0
        }
        “^(;.*)$” # Comment
        {
            $value = $matches[1]
            $CommentCount = $CommentCount + 1
            $name = “Comment” + $CommentCount
            $ini[$section][$name] = $value
        } 
        “(.+?)\s*=(.*)” # Key
        {
            $name,$value = $matches[1..2]
            $ini[$section][$name] = $value
        }
    }
    return $ini
}

答案 1 :(得分:-1)

要将信息提取到PowerShell,您需要导入数据。对于纯文本文件, Get-Content 是典型方法。如另一个答案中所述,文本文件采用INI格式,因此您需要对其进行操作才能使其在脚本中可用。

有一个问题是,您是否将config.txt文件用于其他目的?如果它只适用于这个脚本,那么我建议只在主脚本中声明三个路径作为变量。

如果它用于其他系统并且需要保持该格式,则需要弄清楚如何解析每一行。 获取内容会将其作为一个数组引入,以便您可以浏览每一行。

如果它用于其他系统并且您可以更改格式,我建议切换到CSV,每列是不同的路径名。然后,如果您使用 Import-CSV ,您可以执行$ variable.SourcePath,$ variable.TempPath和$ variable.DestPath。