【发布时间】:2021-11-12 23:03:31
【问题描述】:
我已经参考了这个问题来让我走到这一步: redirecting test-path output to text file
我基本上使用的是提供的相同示例,我只需要创建一个无效文件路径的输出。
我正在尝试通过 UNC 路径检查文件是否存在。所以我针对特定文件(C:\Users\Goalie\Desktop\folder\1.txt、\2.txt、\3.txt)我已经知道每个文件路径,我只是想看看文件是否那些 UNC 路径实际上是否存在。
\paths.txt 包含多个 UNC 文件路径。 例如:
C:\Users\Goalie\Desktop\folder\1.txt
C:\Users\Goalie\Desktop\folder\2.txt
C:\Users\Goalie\Desktop\folder\3.txt
以下代码目前仅适用于有效的文件路径。我也需要无效的文件路径。
$inputfile = "C:\Users\Goalie\Desktop\folder\paths.txt"
$outputexistingfiles = "C:\Users\Goalie\Desktop\folder\existingfiles.txt"
$outputmissingfiles = "C:\Users\Goalie\Desktop\folder\missingfiles.txt"
Get-Content $inputfile |
Where-Object {Test-Path $_} |
Out-File -FilePath $outputexistingfiles -Append
注意:这将用于在最后阶段测试数百万条路径。这是最有效的方法吗?我读过下面版本的 test-path 更快,但是,我不确定如何将它合并到上面,因为它输出 True 或 False,而不是实际的 UNC 路径。
$inputfile = "C:\Users\Goalie\Desktop\folder\paths.txt"
$filepaths = Get-Content $inputfile
$filepaths.ForEach({Test-path $_ -PathType leaf}) | Out-File -FilePath $outputmissingpaths -Append
非常感谢您的帮助。 -守门员
【问题讨论】:
-
我假设,考虑到许多路径,您想一次性找到现有文件和丢失文件?是否有(m)任何路径是彼此的后代?如果您发现
C:\X\不存在,那么您知道C:\X\Y\和C:\X\Y\Z\也不存在。 -
是的,理想情况下,我希望一次性识别两者。我可能应该详细说明我的问题。我正在尝试通过 UNC 路径检查文件是否存在。所以我针对特定文件(C:\Users\Goalie\Desktop\folder\1.txt、2.txt、3.txt)我已经知道每个文件路径,我只是想看看那些文件UNC 路径实际上是否存在。希望澄清。
-
对,从问题中可以清楚地看出这一点。无论是 UNC 路径、映射驱动器还是本地驱动器,都不会真正改变任何东西(只要当前用户有权访问网络共享)。所有这些文件是要测试是否存在于相同的目录中(即
C:\Users\Goalie\Desktop\folder\和任何 UNC 目录),还是到处都是? -
好的,抱歉,第一次使用 :)。它们都在一个主目录下,但是下面有几个子目录。
标签: powershell