2012-01-31 128 views
0

我想使用批处理文件删除大于90天的*.sql文件,并且我写了以下命令。使用批处理文件删除大于90天的文件

forfiles /M *.sql /d -90 /c "cmd /c del @file 

我不确定上面的命令是否有效?如果不需要建议。

+2

的用法不正确如果您不确定那么为什么不测试它? – Mechaflash 2012-01-31 14:27:29

+0

请确保在沙箱文件夹中运行您的测试,其中包含您不一定关心的文件正在消失... – 2012-01-31 14:29:22

+4

要展开Mechaflash,只需用'echo'替换'del'并检查返回的文件是否与您期望。然后你知道它的工作原理。 – 2012-01-31 14:29:24

回答

0

FORFILES/M * .SQL/d -90/C“CMD/C德尔@file

SYNTAX (FOR WIN XP FORFILES RESOURCE KIT) 
FORFILES [-p Path] [-m Mask] [-s] [-c Command] [-d [+ | -] {dd/MM/yyyy | dd}] 

您还没有指定的路径,所以它会默认为当前目录。为了安全起见,我将指定你的路径。

forfiles -p“C:\ Path \ To \ sqlfiles” - m * .sql -d-90 -c“cmd/c del @FILE”

对于你的榜样,而不是指定路径:

FORFILES -m * .SQL -d-90/C “CMD/C德尔@FILE”

编辑:编辑我的命令如使用/而不是-作为开关符号不起作用。也删除了链接,因为它另有说明。请注意:切勿在开关和输入之间插入空格,因为它会失败。另外,您的@参数必须全部大写。另外需要注意的是,ss64.com上的联机文档对于使用@PATH

+0

我怀疑Zohaib故意默认为默认目录 - 没有错。如果使用/ P选项指定路径,则最好在命令中使用'@ PATH'而不是'@ FILE'。 – dbenham 2012-01-31 15:25:49

+0

@dbenham我用路径测试了它,它只给出了文件的路径,不包含文件。如果我使用@FILE,而用'p'开关指定一个目录,它就可以工作。 – Mechaflash 2012-01-31 15:39:58

+0

说什么?在Vista上,'@ PATH'提供完整路径,包括文件名。 '@ FILE'只给出文件名和扩展名,即使使用了/ P选项。因此,除非指定的路径与当前目录匹配,否则带有/ P选项和'@ FILE'的版本将无法在Vista上运行。我不确定FORFILES在其他版本的Windows上的表现如何。 – dbenham 2012-01-31 15:54:17