我们有一个有 50 个用户的 ftp 服务器,他们有一个主文件夹(如下所示)和 5 个子文件夹。我正在寻找一个脚本,可以每周清理子文件夹的内容。但是不要触碰子文件夹中的存档文件夹,而是对所有 50 个用户执行此操作。
C:\ftp\ftp-users jmartin -- jmartin-a1 jmartin-a2 jmartin-a3 jmartin-a4 jmartin-a5 存档
答案1
您请求了 Powershell,因此您可以这样做。只需将 C:\Folder 更改为您需要的任何位置。此脚本将获取根目录中的文件夹列表,然后获取这些文件夹中的文件/文件夹列表并删除它们。
Get-ChildItem -path C:\Folder\ | ?{ $_.PSIsContainer } | Foreach-Object{
$_ | Get-ChildItem -Recurse | Remove-Item
}
这可以扩展。假设我有结构
ROOT
-Nick
--Nick1
---myfile.txt
--Nick2
---myfile.txt
-Bob
--Bob1
---hisfile.txt
--Bob2
---hisfile.txt
我可以使用以下命令删除 Nick1、Nick2、Bob1、Bob2 文件夹(包括文件夹)中的任何内容,但保留前面的结构。如果我想删除 Bob1、Bob2、Nick1 和 Nick2 文件夹,我会使用第一个命令(上面),这样只会保留 Nick 和 Bob 文件夹。
Get-ChildItem -path C:\Folder\ | ?{ $_.PSIsContainer } | Foreach-Object{
$_Get-ChildItem | ?{ $_.PSIsContainer } | Foreach-Object{
$_ | Get-ChildItem -Recurse | Remove-Item
}
}
你可以把它压缩成一行
Get-ChildItem -path C:\Folder\ | ? { $_.PSIsContainer } | Get-ChildItem | ? { $_.PSIsContainer } | Get-ChildItem -Recurse | Remove-Item
答案2
尝试一下这个:
For /R C:\ftp\ftp-users %G IN (.) do del "%G" /q
记住:当您想批量使用它时,请放入其中两个而不是一个。
For /R C:\ftp\ftp-users %%G IN (.) do del "%%G" /q
亲切的问候,
梅西
答案3
您可以随时尝试:
del /s /q C:\FTP\*.*
或者删除子目录中没有存档属性的所有文件:
del /s /q /a:-a C:\FTP\*.*
这里有一些信息:
/A Selects files to delete based on attributes
attributes R Read-only files S System files
H Hidden files A Files ready for archiving
I Not content indexed Files L Reparse Points
- Prefix meaning not
它将查找并删除 C:\FTP\ 子目录中的所有文件
将其添加到 Windows 调度程序中:
%windir%\cmd.exe
带有参数:
/c del /s /q C:\FTP\*.*