查找文件并在 powershell 中不存在文件时退出
Find files and exit if file no exist in powershell
有一些简单的脚本:
$sql = Get-ChildItem -Path "C:\files\" -Filter *.sql
在 C:/files/ 中可以是:
1.没有文件。(我的问题)
一个文件(test.sql)
多个文件。 (test1.sql , test2.sql 等)
对于 3,我正在使用 if ($sql.Count -gt 1 )
并且它工作正常。
2 - 不是那么相关。
第一个是个问题 - 我有什么办法(方法 属性)检查并获取错误或 "Exit 1" 如果文件在源中根本不存在?
(没有任何 if/else "magic")
现在,当文件夹中没有任何 *.sql 文件时,它将路径字符串放入 $sql 变量中。
Get-ChildItem
在没有文件匹配过滤器时不会出错,只是 returns 一个空数组。因此,您不能使用 -ErrorAction Stop
强制终止错误
这意味着您可能需要使用条件语句。最简单的是:
if (!($sql)) {throw 1}
另一种选择是:
$sql = Get-ChildItem -Path "C:\files\" -Filter *.sql
Switch ($sql.count) {
0 { throw 1}
1 { "One Item" }
{$_ -gt 1} { "Multiple Items" }
default { "Invalid input" }
}
有一些简单的脚本:
$sql = Get-ChildItem -Path "C:\files\" -Filter *.sql
在 C:/files/ 中可以是:
1.没有文件。(我的问题)
一个文件(test.sql)
多个文件。 (test1.sql , test2.sql 等)
对于 3,我正在使用 if ($sql.Count -gt 1 )
并且它工作正常。
2 - 不是那么相关。
第一个是个问题 - 我有什么办法(方法 属性)检查并获取错误或 "Exit 1" 如果文件在源中根本不存在? (没有任何 if/else "magic") 现在,当文件夹中没有任何 *.sql 文件时,它将路径字符串放入 $sql 变量中。
Get-ChildItem
在没有文件匹配过滤器时不会出错,只是 returns 一个空数组。因此,您不能使用 -ErrorAction Stop
这意味着您可能需要使用条件语句。最简单的是:
if (!($sql)) {throw 1}
另一种选择是:
$sql = Get-ChildItem -Path "C:\files\" -Filter *.sql
Switch ($sql.count) {
0 { throw 1}
1 { "One Item" }
{$_ -gt 1} { "Multiple Items" }
default { "Invalid input" }
}