每个月,我都会打印一些报告。打印后,我将它们ftp到一个网站。为避免每次都使用相同的文件,我想删除目录中的所有文件。但是,并非所有文件夹都需要删除文件。是否可以删除目录和子目录中除3或4个文件夹之外的所有文件?
我知道你可以这样做:
real function inner_value(this)
type(inner), intent(in) :: this
inner_value = this%container%y
end function
删除所有文件。我对cmd非常不熟悉,我知道可以使用if语句,但我不确定它们是如何被语法化的。理想情况下,我会有类似的东西:
del /s /q "C:\Users\Owner\OneDrive\test\*.*"
任何帮助将不胜感激,谢谢!
编辑:文件夹结构如下所示: 我要删除的主目录如下所示:
C:\ Users \ Owner \ SharePoint \ EDSIReports - Reports \ Reports
在该文件夹中
我有50个文件夹。我要删除的所有文件夹都只是数字(例如:1007,1008,1087,12100,20100)。我想要留下的名称有Batchsheets,Histories,Statements,BlankStatements,Invoices和InterestPaid等名称。所以我想删除存储在文件夹中的所有pdf,其数字名称为1008,而不删除Batchsheets中的文件。
答案 0 :(得分:3)
一种简单的方法是使用robocopy
。我们的想法是创建一个空文件夹,并在文件夹结构上同步这个空文件夹。这将删除任何内容(源中没有任何内容,因此,同步它会使目标为空)。现在的诀窍是从操作中排除所需的目录。
cd /d "C:\Users\Owner\SharePoint\EDSIReports - Reports\Reports"
md _empty_ & robocopy _empty_ . /nocopy /purge /xd Batchsheets Statements Histories BlankStatements Invoices InterestPaid /L
如果您想删除所有数字文件夹,则可以使用
for /d %a in (*) do @(for /f "delims=0123456789" %b in ("%a") do @break) || echo rmdir /s /q "%a"
对于每个文件夹,如果删除所有数字(我们将它们用作分隔符),请留下一个空字符串,内部for /f
将失败(它无需处理)和条件运算符||
(如果先前失败,则执行下一个命令)将执行rmdir
或者,我们可以枚举所有数字文件夹并将其删除
for /f "delims=" %a in('dir /ad /b ^| findstr /x "[0-9]*"') do @echo rmdir /s /q "%a"
请注意:
已编写所有命令以在命令行中使用。要在批处理文件中使用,需要转义for
可替换参数(%a
和%b
),将百分号(%%a
,%%b
)加倍
rmdir
命令前面有echo
,以避免调试时出现问题。如果输出正确,请删除echo
robocopy
命令包含/L
个开关。它将使robocopy
命令列表将被处理。如果输出正确,请删除/L
开关。