[玩转系统] 如何在 PowerShell 中使用 Test-Path cmdlet
作者:精品下载站 日期:2024-12-14 01:57:53 浏览:13 分类:玩电脑
如何在 PowerShell 中使用 Test-Path cmdlet
在 PowerShell 中处理文件或文件夹时,在尝试读取或保存内容之前测试路径是否存在非常重要。这就是 Test-Path cmdlet 的用武之地。它检查路径的所有元素是否存在并返回 $true
或 $false
。
现在,PowerShell 中的 Test-Path cmdlet 不仅限于文件和文件夹。它还可用于测试注册表路径,测试文件是否比特定日期更新,并验证路径是否为有效路径。
在本文中,我们将了解如何使用 Test-Path cmdlet 并了解可以使用它执行的不同选项。
PowerShell 测试路径
PowerShell Test-Path cmdlet 附带了我们可以使用的不同参数。我在下面列出了最常用的参数:
-Path测试路径
-Include指定要包含的路径元素,例如 *.txt
-Exclude指定要排除的路径元素,例如 *.txt
-PathType允许您检查路径是否是容器、叶子或其中之一
-IsValid检查路径是否是有效路径
-OlderThan检查文件是否早于指定的日期时间对象
-NewerThan检查文件是否比指定的日期时间对象新
因此,为了简单地测试路径是否存在,我们只需要指定路径,cmdlet 将返回 $true
或 $false
,具体取决于路径的所有元素是否存在或不:
Test-Path -Path "c:\Temp\TestFiles"
# Result
True
我们可以在脚本中通过简单的 if 语句使用它,如下所示:
$path = "c:\Temp\TestFiles"
if (Test-Path -Path $path) {
Get-ChildItem -Path $path
}
PowerShell 检查文件是否存在
我们还可以使用PowerShell中的Test-Path来检查文件是否存在。为此,我们需要指定完整路径,包括路径参数中的文件名:
# Check if the file LineNumbers.txt exists
$file = "C:\Temp\TestFiles\LineNumbers.txt"
Test-Path -Path $file
# Result
True
现在,在这种情况下,我们显然正在检查一个文件,因为我们已经指定了包含带有扩展名的文件的完整路径。但如果您不知道该路径是否指向文件或文件夹,则可以指定 PathType 参数。
假设我们想知道 $profile
是否指向一个文件。为此,我们将 PathType
设置为 Leaf
:
# Check if $profile is a file:
Test-Path -Path $profile -PathType leaf
# Result
True
PowerShell 检查文件夹是否存在
就像文件一样,我们也可以在 PowerShell 中检查文件夹是否存在。为此,我们只需要指定文件夹的路径:
Test-Path -Path "c:\Temp\TestFiles"
# Result
True
如果我们想确保路径指向一个文件夹,那么我们可以添加-PathType
参数并将其设置为container
。这样,Test-Path cmdlet 不仅会检查路径是否存在,还会检查它是否是文件夹:
# Check if $profile is a folder:
Test-Path -Path $profile -PathType container
# Result
False
如果你想知道文件夹中是否包含文件,那么就不需要使用Get-ChildItem等进行计数,我们只需使用Test-Path
并添加通配符*即可
来检查给定路径中是否有文件:
# Check if there are files in the folder
Test-Path -Path "c:\Temp\TestFiles\*"
# Result
True
使用包含和排除
如果您想测试文件夹是否包含特定文件,则可以使用 -include
和 -exclude
参数。这样我们就可以检查文件夹是否包含指定的文件类型或除指定文件类型之外的任何文件。
例如,我们要检查以下路径中是否有日志文件:
# Check if the path contains .log files
Test-Path -Path "C:\Temp\TestFiles\*" -PathType leaf -Include *.log
# Result
False
如果我们想测试除了 .log
文件之外是否还有其他文件,那么我们可以使用排除,例如:
# Check if the path contains .log files
Test-Path -Path "C:\Temp\TestFiles\*" -PathType leaf -Exclude *.log
# Result
True
测试路径是否有效
当您在脚本中动态创建路径时,最好测试生成的路径是否是有效路径。为此,我们可以使用参数-IsValid。这不会检查路径是否存在,仅检查它是否有效。
例如,我们可以检查 PATH 系统变量中的所有位置是否都是有效路径:
$env:path -split ";" | Test-Path -IsValid
或者也许更简单的例子是:
$storage = "c:\temp\testfiles\"
$newFolder = "\LazyFolder"
$path = $newFolder + $storage # yes, the wrong way around
Test-Path -path $path -IsValid
# Result
False
检查文件或文件夹是否比某个日期新或旧
除了测试路径是否存在之外,我们还可以检查文件或文件夹是否比指定日期新或旧。如果您想知道文件是否已更新,这尤其有用。
参数 -NewerThan
和 -OlderThan
需要日期或日期时间对象。这可以是日期时间字符串或数据时间对象。因此,要测试文件夹“testfiles”是否比二月一日新,我们可以执行以下操作:
Test-Path -Path "C:\Temp\TestFiles\" -NewerThan "01 feb 2023"
# Result
True
但我们也可以检查该文件夹是否超过 3 天。为此,我们首先在 PowerShell 中创建一个日期对象,然后可以在 Test-Path cmdlet 中使用该对象:
# Get the date from 3 days ago
$date = (Get-Date).AddDays(-3)
# Test if the folder is newer
Test-Path -Path "C:\Temp\TestFiles\" -NewerThan $date
当然,您也可以对 OlderThan 执行相同的操作。
使用 PowerShell 测试注册表路径
PowerShell 中的 Test-Path cmdlet 还可用于检查注册表路径是否存在。现在这里需要注意一件重要的事情,它无法测试注册表项。
如果您查看下面的屏幕截图,我们可以测试关键 Outlook (1) 是否存在。但我们无法测试条目“OutlookName”(2) 是否存在。
因此,要测试注册表项,我们只需指定该注册表项的路径,如下所示:
Test-Path -Path "HKCU:\Software\Microsoft\Office.0\Outlook"
正如您在下面的结果中看到的,关键 Outlook 的路径存在,但找不到 OutlookName 条目的路径:
总结
在任何编程或脚本语言中,测试或验证资源是否存在都很重要。它可以帮助您防止脚本中出现错误或意外行为,并允许您进行正确的错误处理。
PowerShell 中的 Test-Path cmdlet 的功能比大多数人想象的要多,但在所有情况下,它只输出 true 或 false。
我希望这篇文章对您有用,如果您有任何疑问,请在下面发表评论。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag