0

我真的希望这是有道理的。脚本会有更多内容,但提供的片段是我遇到的问题。

我正在做的是每天运行一个脚本以在特定文件夹中查找前一天的文件。有时文件夹在那里并且是空的,在这种情况下它们被删除。如果存在文件夹,请检查它们是否有其他文件。如果文件存在,则返回父目录名称。

文件夹 11 是永久的,永远不会改变。每天创建 11 个文件夹,其名称格式为 YYYYDDD(DDD = julian day)。如果文件夹 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
4

1 回答 1

0

用于Split-Path -Parent返回文件或文件夹的父文件夹(完整路径)。

如果您只想要父文件夹名称,您可以使用Split-Path -Parent | Get-Item | Select-Object -ExpandProperty Name.

或者,您可以使用($_.FullName.split("\"))[-2]. [-2]引用文件夹名称数组中的倒数第二个元素。[-1]将引用文件名。可能会快一点,具体取决于您必须遍历多少文件。

于 2018-11-08T19:11:39.917 回答