我真的希望这有意义。脚本将有更多内容,但是提供的代码段是我遇到的问题。
我正在做的是每天运行一个脚本,以查找前一天在特定文件夹中的文件。有时文件夹在那里并且为空,在这种情况下,它们将被删除。如果存在文件夹,请检查它们是否包含其他文件。如果文件存在,请返回父目录名称。
文件夹11是永久的,永远不会更改。每天都会创建11个文件夹,其名称格式为YYYYDDD(DDD =儒略日)。如果存在文件夹YYYYDDD,请检查它是否存在以YYDDD开头的文件夹。如果存在以YYDDD开头的文件夹,请检查该文件夹中的文件。如果存在任何文件,请返回父目录名称,该名称为YYDDD。
我知道我的代码当前返回包括文件名在内的整个路径。我希望它返回文件所在的父目录的BaseName
。
还有其他可以忽略的代码。用于扩展检查其他文件夹中的类似文件。
$date0 = (Get-Date).ToString("yy") + ((Get-Date).AddDays(-1).DayOfYear).ToString("D3")
$date1 = (Get-Date).ToString("yyyy") + ((Get-Date).AddDays(-1).DayOfYear).ToString("D3")
$path0 = "U:\PShell\Testing\Delete Julian Dates\Test\11\$date1"
$path1 = "U:\PShell\Testing\Delete Julian Dates\Test\12\$date1"
$path2 = "U:\PShell\Testing\Delete Julian Dates\Test\13\$date1"
$checkfiles = Get-ChildItem $path0\"$date0*"\*
if (Test-Path $path0\"$date0*"\*) {
$checkfiles|
% { Write-Host $_.FullName }
} else {
Write-Host "Folder does not exist or is empty." }
Pause
答案 0 :(得分:0)
使用Split-Path -Parent
返回文件或文件夹的父文件夹(完整路径)。
如果只想使用父文件夹名称,则可以使用Split-Path -Parent | Get-Item | Select-Object -ExpandProperty Name
。
或者,您可以使用($_.FullName.split("\"))[-2]
。 [-2]
引用文件夹名称数组中的倒数第二个元素。 [-1]
将引用文件名。可能要快一些,具体取决于您要遍历多少个文件。