从选择字符串输出中获取“父文件夹+文件名”

拉斐尔大奖赛

我正在编写一个简单的脚本,以递归方式列出包含“插件”一词的“全屏”文件夹中的所有文件。由于路径太长且不必要,因此我决定获取文件名。问题在于所有文件都被称为“ index.xml”,因此获得“包含文件夹+文件名”将非常有帮助。所以输出看起来像这样:

on\index.xml
off\index.xml

代替:

C:\this\is\a\very\long\path\fullscreen\on\index.xml
C:\this\is\a\very\long\path\fullscreen\off\index.xml

这就是我所拥有的:

dir .\fullscreen | sls plugin | foreach { write-host $($_).path }

我收到此错误:

无法将参数绑定到参数“ Path”,因为它为null。

基思·希尔

您接近::-)

dir .\fullscreen | sls plugin | foreach { write-host $_.path }

这也可以工作:

dir .\fullscreen | sls plugin | foreach { write-host "$($_.path)" }

顺便说一句,我通常会避免,Write-Host除非您实际上只显示信息,以便某人看到坐在控制台上的人。如果您以后想将此输出捕获到一个变量,它将无法按原样工作:

$files = dir .\fullscreen | sls plugin | foreach { write-host $_.path } # doesn't work

大多数时候,仅使用标准输出流就可以实现相同的输出并启用对变量的捕获,例如:

dir .\fullscreen | sls plugin | foreach { $_.path }

如果您使用的是PowerShell v3,则可以简化为:

dir .\fullscreen | sls plugin | % Path

更新:仅获取包含文件夹的名称,请执行以下操作:

dir .\fullscreen | sls plugin | % {"$(split-path (split-path $_ -parent) -leaf)\$($_.Filename)"}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章