以下脚本列出目录中的所有文件,并在控制台中返回它们的名称和路径。

结果是这样的:

C:\Projects\company\trunk\www\client\project\customer\start.js

我需要删除初始部分并得到类似的结果
project\customer\start.js

我无法在 Replace 中设置正确的正则表达式。
你能指出我正确的方向吗?

Get-ChildItem -Path C:\Projects\company\trunk\www\client\project -Filter *.js -Recurse -File |
  Sort-Object Length -Descending |
  ForEach-Object {
    $_ = $_ -replace '\\C:\Projects\company\trunk\www\client\project', ''
    "'" + $_.FullName + "',"
  }

最佳答案

$_ 是一个 FileInfo 对象,不是字符串,路径不以反斜杠开头,如果要使用 -replace 运算符,搜索字符串中的反斜杠必须转义。

试试这个:

$basedir = 'C:\ppp\nnn\trunk\www\client'
$pattern = [regex]::Escape("^$basedir\")

Get-ChildItem -Path "$basedir\nnn" -Filter *.js -Recurse -File |
  Sort-Object Length -Descending |
  ForEach-Object { $_.FullName -replace $pattern }

关于powershell - 删除父路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31050666/

10-11 01:54