【发布时间】:2020-07-09 20:20:50
【问题描述】:
我正在尝试找到一个路径,以便我可以运行一个命令。我不想查找文件,而是查找完整的文件夹名称,包括驱动器号。通常路径驱动器号会有所不同,因此我需要检查几个不同的驱动器号才能找到包含我的文件的文件夹。
有时该文件会以相同的名称存在于多个驱动器号位置。这很好,但我需要确定每个保存的文件夹。目前我已经创建了这个丑陋的单线,它可以工作,但不完全是我需要的......由于缺乏弄清楚如何去做,我创建了一个文件,我可以将它保存在我需要找到的路径中,所以我可以有一个目标来寻找....这个文件被命名为file.txt
get-childItem -path f:\,g:\,h:\ -recurse -include file.txt
我运行它的一些设备不会拥有所有驱动器,因此会出现更多丑陋,我设置了一个变量并包含一些 -erroraction 以继续,即使未找到驱动器号...
$path= Get-ChildItem -Path f:\, g:\, h:\ -Recurse -Include file.txt -ErrorAction SilentlyContinue
我确信必须有一种更优雅的方式来实现目标......我真的只是想找到一个包含一些特定文件名的文件夹的路径,而不管驱动器号是什么。我不必拥有 file.txt 或任何此代码。我只是想解决这个问题并学习使用 PowerShell 的最佳方法。我有一个不错的批处理脚本来做,但我正在尝试用纯 PowerShell 重写它。
FOR %%i IN (C D E F G H I J K L N M O P Q R S T U V W X Y Z) DO (
IF EXIST %%i:\scripts\file.txt (
ECHO Script found at %%i
)
)
这个批处理版本效果很好,我可以运行我的命令并引用 %%i 变量作为找到我的文件的路径...但我想将它重构到 PowerShell 中。
我在这个网站上看到了一些其他线程,但我没有取得太大进展而且我失败了。有没有更好的方法?
$Drives = "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
foreach ($Drive in $Drives) {
if (Test-Path "${Drive}:\file.txt") {
$FileLocation = $Drive
}
}
Write-Host $FileLocation
【问题讨论】:
标签: powershell