powershell - 搜索并获取文件,但如果值传递 null 则忽略代码
问题描述
我通过传递该文件的版本号从特定文件夹中获取文件,但是如果我不传递版本(按回车键),则值变为空并且代码不执行。
在我的代码中,当我没有传递版本(按回车键)时,它会从该文件夹中获取所有不正确的文件。
如果我将null
值传递给变量$basepkg
,则代码不应执行if($basepkg -ne $null -And $pkgtype -eq 'A')
这行代码,但它会执行。
Write-Host "Removing existing files"
Remove-Item -path F:\temp\Packages\* -Recurse -Force
$pkg = Read-Host 'Input the package version'
$basepkg = Read-Host 'Provide the Policy Base Package version' #Passing null value here
$pkgtype = Read-Host 'Please specify the package type - A OR B'
if($basepkg -ne $null -And $pkgtype -eq 'A')
{
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $basepkg } | Where-Object { $_.Name -match '`*basetemplate*'} | Where-Object { $_.Name -match '`*-A*'}| Copy-Item -Destination "F:\temp\Packages" -Force
}
elseif($basepkg -ne $null -And $pkgtype -eq 'B')
{
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $basepkg } | Where-Object { $_.Name -match '`*basetemplate*'} |Where-Object { $_.Name -match '`*-B*'} | Copy-Item -Destination "F:\temp\Packages" -Force
}
else
{
Break
}
if($pkgtype -eq 'A')
{
Write-Host "Extracting files"
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $pkg } | Where-Object { $_.Name -match 'policy*'} | Where-Object { $_.Name -match '`*-A*'} | Copy-Item -Destination "F:\temp\Packages" -Force
}
elseif($pkgtype -eq 'B')
{
Write-Host "Extracting files"
Get-ChildItem -Path "F:\temp1\Packages" -Recurse | Where-Object { $_.Name -match $pkg } | Where-Object { $_.Name -match 'policy*'} | Where-Object { $_.Name -match '`*-B*'} | Copy-Item -Destination "F:\temp\Packages" -Force
}
else
{
Write-Host "Please select the correct package type by re-running the script"
Start-Sleep -s 5
exit
}
$pkgCount = Get-ChildItem -Path "F:\temp\Packages" -Recurse -File | Measure-Object | %{$_.Count}
if($pkgCount -eq $null)
{
Write-Host "Package not found, please confirm the package version"
Start-Sleep -s 5
exit
}
Write-Host "Files Extracted"
解决方案
Read-Host
按下回车键时不返回$null
但''
(空字符串)。要检查两者的使用[string]::IsNullOrEmpty($basepkg)
:
if(-not [string]::IsNullOrEmpty($basepkg) -And $pkgtype -eq 'A'){...}
推荐阅读
- python - 写入文本文件时出现问题。被覆盖/剪切的文本文件
- python - 使用 Beam IO ReadFromPubSub 模块时,可以在 Python 中拉取带有属性的消息吗?不清楚是否支持
- julia - 对 Julia、CuArrays 和 ArrayFire 中的 Nvidia GPU 包感到困惑
- mysql - 如何使用 mySQL 查询按顺序连接多个字段?
- javascript - 为什么我的内部函数会在纯 JavaScript 中导致“未捕获的 TypeError:countMe.Increment 不是函数”?
- sql - Oracle 连接子句中的无效数字
- bash - 试图删除我的 .git 文件夹并且 'rm -r .git --force' 不起作用
- javascript - flex的上下滑动功能问题:1
- mysql - mysql 理解 group by 与一个连接表
- python - 我有一个带有列表的特定列的所有行。从目标列表中选择不包含至少一个元素的行