![]() |
干练的仙人球 · AI生成天空盒!泰裤辣! - 哔哩哔哩· 8 月前 · |
![]() |
任性的冰淇淋 · chrome.tabs.create is ...· 2 年前 · |
![]() |
道上混的沙发 · Windows之hash利用小结 - 简书· 2 年前 · |
我正在尝试编写一个PowerShell脚本,该脚本遍历文件夹或文件路径的值列表,并首先删除文件,然后删除空文件夹。
到目前为止,我的脚本如下:
[xml]$XmlDocument = Get-Content -Path h:\List_Files.resp.xml
$Files = XmlDocument.OUTPUT.databrowse_BrowseResponse.browseResult.dataResultSet.Path
现在,我正在尝试测试变量中的每一行,看看它是否是一个文件,并首先删除它,然后遍历并删除子文件夹和文件夹。这只是为了让它是一个干净的过程。
下一步我不能让它工作,但我认为我需要这样的东西:
foreach ($file in $Files)
if (! $_.PSIsContainer)
Remove-Item $_.FullName}
}
下一节可以清理子文件夹和文件夹。
有什么建议吗?
考虑以下代码:
$Files = Get-ChildItem -Path $env:Temp
foreach ($file in $Files)
$_.FullName
$Files | ForEach {
$_.FullName
}
第一个foreach是用于循环的PowerShell语言命令,第二个ForEach是完全不同的
ForEach-Object
cmdlet的别名。
在
ForEach-Object
中,
$_
指向从
$Files
集合传入的循环中的当前对象,但在第一个foreach中,
$_
没有任何意义。
在foreach循环中,使用循环变量
$file
foreach ($file in $Files)
$file.FullName
}
我找到了解决此问题的方法:使用参数
-FileType
等于
Leaf
的
Test-Path
cmdlet检查它是否为文件,或使用
Container
检查它是否为文件夹:
# Check if file (works with files with and without extension)
Test-Path -Path 'C:\Demo\FileWithExtension.txt' -PathType Leaf
Test-Path -Path 'C:\Demo\FileWithoutExtension' -PathType Leaf
![]() |
干练的仙人球 · AI生成天空盒!泰裤辣! - 哔哩哔哩 8 月前 |
![]() |
任性的冰淇淋 · chrome.tabs.create is giving an error - "Uncaught TypeError: Cannot call method 'create' of undefined" - Stack Overflow 2 年前 |
![]() |
道上混的沙发 · Windows之hash利用小结 - 简书 2 年前 |