如何 运行 使用 powershell 在系统变量 PATH 中的所有路径上测试路径?
How do I run test-path on all paths in the system variable PATH using powershell?
我想要 运行 测试路径或类似的东西来完成我在路径变量中查找无效路径的目的。
我做的主要是搜索
test path system variable for invalid entries
这没有找到任何东西。
这个例子只是为了展示我已经尝试过一些东西,但我真的不知道最好的命令是什么。
Test-Path -Path %Path% -PathType Any
更新
这些脚本使我能够找到一些错误的路径并修复它们
在 Mathias R. Jessen's 的基础上发表评论:
# Output those PATH entries that refer to nonexistent dirs.
# Works on both Windows and Unix-like platforms.
$env:PATH -split [IO.Path]::PathSeparator -ne '' |
Where-Object { -not (Test-Path $_) }
使用变量名的全大写形式 PATH
和 [IO.Path]::PathSeparator
as the separator to -split
使命令 cross-platform:
在Unix-like平台环境变量名是case-sensitive,所以需要使用$env:PATH
(all-upercase);相比之下,Windows 不是 case-sensitive,因此 $env:PATH
也在那里工作,即使名称的实际大小写是 Path
.
在 Unix-like 平台上,:
分隔 $env:PATH
中的条目,而在 Windows 上是 ;
- [IO.Path]::PathSeparator
return 是 platform-appropriate 字符。
-ne ''
过滤掉任何由 -split
操作产生的空标记,这些空标记可能来自变量值中直接相邻的分隔符(例如,;;
) - 这样的空条目没有任何作用,可以忽略。
- 注意:用一个数组作为LHS,比如returned by
-split
,PowerShell比较运算符比如-eq
和 -ne
作为 过滤器 和 return 一个 匹配项数组 而不是一个布尔值 - 见 about_Comparison_Operators.
Where-Object
调用将输入目录路径过滤为 不 存在的目录路径,并输出它们(通过默认)。
- 请注意,严格来说,
Test-Path
's first positional parameter is -Path
, which interprets its argument as a wildcard expression。
- 为了完全稳健,需要
Test-Path -LiteralPath $_
,以排除对碰巧包含 [
作为通配符的文字路径的无意解释 - 尽管 $env:PATH
中的条目似乎不太可能。
我想要 运行 测试路径或类似的东西来完成我在路径变量中查找无效路径的目的。
我做的主要是搜索
test path system variable for invalid entries
这没有找到任何东西。
这个例子只是为了展示我已经尝试过一些东西,但我真的不知道最好的命令是什么。
Test-Path -Path %Path% -PathType Any
更新
这些脚本使我能够找到一些错误的路径并修复它们
在 Mathias R. Jessen's 的基础上发表评论:
# Output those PATH entries that refer to nonexistent dirs.
# Works on both Windows and Unix-like platforms.
$env:PATH -split [IO.Path]::PathSeparator -ne '' |
Where-Object { -not (Test-Path $_) }
使用变量名的全大写形式
PATH
和[IO.Path]::PathSeparator
as the separator to-split
使命令 cross-platform:在Unix-like平台环境变量名是case-sensitive,所以需要使用
$env:PATH
(all-upercase);相比之下,Windows 不是 case-sensitive,因此$env:PATH
也在那里工作,即使名称的实际大小写是Path
.在 Unix-like 平台上,
:
分隔$env:PATH
中的条目,而在 Windows 上是;
-[IO.Path]::PathSeparator
return 是 platform-appropriate 字符。
-ne ''
过滤掉任何由-split
操作产生的空标记,这些空标记可能来自变量值中直接相邻的分隔符(例如,;;
) - 这样的空条目没有任何作用,可以忽略。- 注意:用一个数组作为LHS,比如returned by
-split
,PowerShell比较运算符比如-eq
和-ne
作为 过滤器 和 return 一个 匹配项数组 而不是一个布尔值 - 见 about_Comparison_Operators.
- 注意:用一个数组作为LHS,比如returned by
Where-Object
调用将输入目录路径过滤为 不 存在的目录路径,并输出它们(通过默认)。- 请注意,严格来说,
Test-Path
's first positional parameter is-Path
, which interprets its argument as a wildcard expression。 - 为了完全稳健,需要
Test-Path -LiteralPath $_
,以排除对碰巧包含[
作为通配符的文字路径的无意解释 - 尽管$env:PATH
中的条目似乎不太可能。
- 请注意,严格来说,