以下脚本列出目录中的所有文件,并在控制台中返回它们的名称和路径。
结果是这样的:
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/