Windows 命令提示符-删除具有特定名称的目录Patern
我需要我们一个蝙蝠文件,将删除特定的目录,只要他们肉两个特定的critera。1) 如果目录超过14天2)如果目录名由所有数字组成Windows 命令提示符-删除具有特定名称的目录Patern,windows,batch-file,Windows,Batch File,我需要我们一个蝙蝠文件,将删除特定的目录,只要他们肉两个特定的critera。1) 如果目录超过14天2)如果目录名由所有数字组成 我有下面的代码,它只处理标准1,也就是说,目录已经超过14天了。我如何扩展它,然后只删除那些基于数字的名称FORFILES/D-14/C“cmd/C如果@isdir==TRUE rmdir@path/s/q”由于这将作为计划作业运行,您可能应该指定根文件夹 您可以使用FINDSTR验证名称是否仅由数字组成。前导点和尾随点需要与@file中包含的引号匹配 pushd
我有下面的代码,它只处理标准1,也就是说,目录已经超过14天了。我如何扩展它,然后只删除那些基于数字的名称
FORFILES/D-14/C“cmd/C如果@isdir==TRUE rmdir@path/s/q”
由于这将作为计划作业运行,您可能应该指定根文件夹
您可以使用FINDSTR验证名称是否仅由数字组成。前导点和尾随点需要与@file中包含的引号匹配
pushd "yourRootPath"
FORFILES /D -14 /C "cmd /c IF @isdir == TRUE echo @file|>nul findstr /x .[0-9]*.&&rd /s /q @path"
然而,上述过程可能相当缓慢。迭代数字文件夹名称,然后为每个候选文件夹调用文件以测试日期可能会更快:
pushd "yourRootPath"
for /f "delims=" %%F in ('"dir /b /ad|findstr /x [0-9]*"') do 2>nul forfiles /d -14 /m %%F /c "cmd /c rd /s /q @path"
由于这将作为计划作业运行,您可能应该指定根文件夹 您可以使用FINDSTR验证名称是否仅由数字组成。前导点和尾随点需要与@file中包含的引号匹配
pushd "yourRootPath"
FORFILES /D -14 /C "cmd /c IF @isdir == TRUE echo @file|>nul findstr /x .[0-9]*.&&rd /s /q @path"
然而,上述过程可能相当缓慢。迭代数字文件夹名称,然后为每个候选文件夹调用文件以测试日期可能会更快:
pushd "yourRootPath"
for /f "delims=" %%F in ('"dir /b /ad|findstr /x [0-9]*"') do 2>nul forfiles /d -14 /m %%F /c "cmd /c rd /s /q @path"
您使用的是什么版本的Windows?我正在Windows 7上进行测试,但它最终将作为预定任务在服务器上运行。我不确定windows server的哪个版本,我将进行调查。您使用的是哪个版本的windows?我正在windows 7上进行测试,但它最终将作为服务器上的计划任务运行。我不确定windows server的哪个版本,我将进行调查。@Squashman-是的,请阅读前面关于引号的句子。我尝试第二种解决方案,因为谁不喜欢效率。它给了我
%%%F,这在当时是意外的。
@LCaraway-我编写代码时假设它将用于批处理脚本,这需要两倍的百分比。如果直接在命令行上使用,请将所有%%F
更改为%F
。是。Forfiles会加上引号。但我想你也可以显式地匹配引号findstr/x\0x22[0-9]*\0x22
@Squashman-是的,但没有必要那么具体,因为字符保证是引号-我们只需要考虑它们,以便精确匹配。@Squashman-是的,请阅读前面关于引号的句子。我尝试第二种解决方案,因为谁不喜欢效率。它给了我%%%F,这在当时是意外的。
@LCaraway-我编写代码时假设它将用于批处理脚本,这需要两倍的百分比。如果直接在命令行上使用,请将所有%%F
更改为%F
。是。Forfiles会加上引号。但我想你也可以显式地匹配引号findstr/x\0x22[0-9]*\0x22
@Squashman-是的,但不必那么具体,因为字符保证是引号-我们只需要考虑它们,以便精确匹配。