我已经尝试了一段时间来寻找这个答案,但似乎无法找到我想要的东西。也许我的写法很奇怪。
我需要一个脚本,它会递归删除网络共享中每个子目录中的特定文件。
例如:
\\\share\\*\a\b\file.settings
*代表 n 子目录的数量。路径的其余部分将始终相同。看起来我可以在Powershell中使用Get-childitem
和remove-item
的组合来完成此操作,但是我无法找到我需要的确切命令。
任何帮助都会非常感激!感谢。
答案 0 :(得分:5)
这样的事情应该有效:
Get-ChildItem '\\server\share' -Recurse | ? {
$_.FullName -like '*\a\b\file.settings'
} | Remove-Item
如果您只对.\a\b\file.settings
的直接子文件夹中的文件\\server\share
感兴趣,可以将代码简化为以下内容:
Get-ChildItem '\\server\share\*\a\b\file.settings' | Remove-Item
答案 1 :(得分:1)
虽然我无法与Powershell合作,但我放在一起的下面的VBS似乎运作良好:
Set FSfolder = FSO.GetFolder(\\server\share)
For Each subfolder In FSfolder.SubFolders
UserProfile=subfolder.Name
SettingFile="\\server\share\" & UserProfile & "\a\b\file.settings"
If FSO.FileExists(SettingFile) Then
FSO.DeleteFile(SettingFile)
End If
Next
答案 2 :(得分:1)
将我的评论代码分解为长格式:
$folders = Get-ChildItem "\\server\share\" -Directory
ForEach ($folder in $folders) {
$file = Join-Path $folder.FullName "\a\b\file.settings"
if (Test-Path $file) { Remove-Item $file }
}