我正在尝试检查是否存在多个文件/文件夹。Test-Path
参数-Path
接受[string[]]
数组。请参见示例代码:
$arr = @(
"C:\a\fake\path\test1.txt",
"C:\another\fake\path\test2.txt",
"C:\not\a\path\test3.txt",
"Z:\not\a\path"
)
if (Test-Path -Path $arr) {
$true
} else {
$false
}
字符串
输出:$true
$arr
中的路径都无效。它们不存在(我没有Z:
驱动器)--这里发生了什么?
1条答案
按热度按时间fiei3ece1#
基于有用的评论:
Test-Path
* 不支持传递路径的 * 数组 *(通过 * 参数 * 和 * 通过管道 *),但它输出一个布尔值($true
或$false
),指示每个输入路径 * 的路径 * 的存在。if
语句的条件上下文中,* 总是产生$true
*;例如:字符串
[bool] @($false)
实际上与[bool] $false
相同,因此$false
也相同)。如果你想知道是否 * 至少有一个 * 输入路径 * 不存在,使用
-contains
运算符:型
(相反,
-contains $true
告诉你是否至少有一个路径 * 存在 *。