powershell 脚本清理 ftp 用户文件夹

powershell 脚本清理 ftp 用户文件夹

我们有一个有 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\*.*

相关内容