【问题标题】:How to -Include using a variable with multiple criteria如何 - 包括使用具有多个条件的变量
【发布时间】:2018-01-04 07:41:59
【问题描述】:

我正在尝试将名称满足一组给定条件的文件从一个文件夹复制到另一个文件夹。从this answer,我发现-Include 语句可以用于此。

我的问题是我需要用户指定标准(通过变量),并且可能包含多个标准。也就是说,我尝试执行以下操作:

# THIS WORKS FINE
$includeFiles = "*tests.jar"
Copy-Item "from/path" "to/path" -Include $includeFiles 

# THIS RETURNS NOTHING
$includeFiles = "*tests.jar, other.jar"
Copy-Item "from/path" "to/path" -Include $includeFiles 

如何解决此问题?是否有可能以某种方式“解串”变量,使用其他语法或类似语法?

【问题讨论】:

    标签: powershell


    【解决方案1】:
    # THIS WORKS FINE
    $copyPattern = "*tests.jar", "other.jar"
    Copy-Item "from/path" "to/path" -Include $copyPattern
    

    关键是-Include 的参数是一个字符串数组,每个字符串都是一个要包含的模式。您编写它的方式需要在文件名中使用逗号和空格。因此,除非您有此类文件,否则不会包含任何内容。

    如果您确定该模式永远不会包含逗号,并且您宁愿只有一个字符串,您当然可以将其转换为数组:

    $copyPatterns = "*tests.jar, other.jar" -split ', '
    

    请注意,解析在命令参数中的工作方式不同,这就是为什么以下内容也可以工作的原因:

    Copy-Item from/path to/path -Include *tests.jar,other.jar
    

    【讨论】:

    • 很好的答案!在我的场景中,输入变量必须是单个字符串,但是在使用它之前将该字符串拆分为 Include 效果很好。谢谢!
    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2022-01-08
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多