我的代码不会写“没有要处理的文件”

时间:2019-05-14 14:37:00

标签: powershell

我的代码不会在屏幕上显示“没有要处理的文件”。应该对目录中的文件进行计数,如果目录中没有文件,则应显示“没有要处理的文件”,然后退出。

# Function Measure, counts files to see if there are any to process.
Function Measure
{
$Measure = ( Get-ChildItem C:\temp\BDMDump\ | Measure-Object ).Count
    If ($Measure = "0") 
            {Write-Host "No files to process"|Exit} 
    else
            {Write-Host "There are files to process.."}
}

我希望看到“没有要处理的文件”。

2 个答案:

答案 0 :(得分:5)

这里有4个问题:

  1. 您正在使用仅用于分配的'='。使用'-eq进行比较。
  2. 您要用引号将整数括起来,然后将其转换为字符串。只需删除引号即可。
  3. 正如ineedalife所述,您正在准备退出。您应该改用分号和return关键字; return退出函数。如果函数不执行其他任何操作,甚至可能不需要这样做。
  4. 您正在尝试使用“度量”作为函数的名称。这是Measure-Object的别名!只需将名称更改为其他名称,例如“ Measure-Files”

另外,您可以删除| Measure-Object,因为由Get-ChildItem返回的对象System.IO.FileInfo已经具有“计数”方法。

这是您代码的修订版,其中包含所有更改:

Function Measure-Files {
  $Measure = Get-ChildItem "C:\temp\BDMDump\"
  If ($Measure.Count -eq 0) 
  { Write-Host "No files to process"; return } 
  else
  { Write-Host "There are files to process.." }
}

答案 1 :(得分:0)

有3个问题
1. Exit无法通过管道传递到。如果要退出会话,请使用Exit-PSSession,这将关闭窗口。
2.应将“等于”从=更改为-eq
3. "0"应该更改为0,因为它是整数

If ($Measure -eq 0) 
   {Write-Host "No files to process"|Exit-PSSession} 
    else
        {Write-Host "There are files to process.."}