运行与文件名正则表达式模式匹配的PowerShell脚本时,请排除所有子目录
/
- 2018-11-19.md
18-2/
- 2018-10-16.md
- 2019-01-14.md
- 2019-10-10.md
18-3/
- 2019-01-13.md
- 2019-04-25.md
$file = '2018-11-19.md'
Get-ChildItem -recurse | where-object { $_.FullName -match '[0-9]{4}-[0-9]{2}-[0-9]{2}.md' } |
ForEach-Object {$fullname = $_.fullname; (Get-Content $_.fullname | foreach-object {
$_ -replace "apple", "orange"
}) | Set-Content $fullname}
(Get-Content $file | ForEach-Object {
$_ -replace '<p(.*?)>(.*?)</p>', '$2'
}) | Set-Content -Encoding Utf8 $file
Get-ChildItem -recurse | where-object { $_.FullName -match '[0-9]{4}-[0-9]{2}-[0-9]{2}.md' } |
foreach-Object {$fullname2 = $_.fullname; (Get-Content $_.fullname |
pandoc -f markdown -t markdown -o $fullname2 $fullname2
)}
-Exclude folder-name
)。我想排除所有子目录而不用特别命名,因为... 为了将脚本的作用域限制为根目录,我尝试在-notmatch
上使用\
,\*
,\*.*
,\\*
等进行变体,没有成功。
要排除子目录,我在-Exclude
上尝试了具有相同路径的变体,但没有成功。
我的PowerShell知识不够先进,无法进一步发展。我将不胜感激,希望为您提供任何帮助或指出正确的方向。谢谢您的帮助。
答案 0 :(得分:2)
正如Owain和gvee在评论中指出的那样,当使用-Recurse开关时,您告诉Get-ChildItem cmdlet您希望从所选位置遍历子目录结构。 As expained on the docs site of the cmdlet
Gets the items in the specified locations and in all child items of the locations.
因此,只需删除开关,即可使代码按您的意愿执行。
如果只需要X级子目录,则可以使用-Depth
开关。
Get-ChildItem | where-object { $_.FullName -match '[0-9]{4}-[0-9]{2}-[0-9]{2}.md' } |
ForEach-Object {$fullname = $_.fullname; (Get-Content $_.fullname | foreach-object {
$_ -replace "apple", "orange"
}) | Set-Content $fullname}
(Get-Content $file | ForEach-Object {
$_ -replace '<p(.*?)>(.*?)</p>', '$2'
}) | Set-Content -Encoding Utf8 $file
Get-ChildItem | where-object { $_.FullName -match '[0-9]{4}-[0-9]{2}-[0-9]{2}.md' } |
foreach-Object {$fullname2 = $_.fullname; (Get-Content $_.fullname |
pandoc -f markdown -t markdown -o $fullname2 $fullname2
)}