繁体   English   中英

批处理文件命令以从网络驱动器中删除文件

[英]Batch file commands to remove files from network drive

我试图定期从共享驱动器中删除应用程序日志,

ForFiles /p "\\netapp-1\Transfers\Logs\QA" /s /d -15 /c "cmd /c del @file"

当路径是我的本地驱动器时,上面的命令有效,但是对于共享驱动器,则不起作用,我们将不胜感激。

干杯!

ForFiles.exe不支持将UNC路径作为开始搜索的起始目录,因此您必须将<Drive Letter>:临时映射到网络路径。

最方便的方法是使用pushd/popd命令对自动执行MAP / UNMAP,而无需考虑当前可用于映射的驱动器号。

pushd "\\netapp-1\Transfers\Logs\QA" && (ForFiles /s /d -15 /c "cmd /c if @isdir==FALSE del @path" & popd)

在批处理文件中,以上内容可以多行编写,以提高可读性

pushd "\\netapp-1\Transfers\Logs\QA" && (
    ForFiles /s /d -15 /c "cmd /c if @isdir==FALSE del @path"
    popd
)

当您在注释部分中提供初步解决方案时, ForFiles命令示例中有两个我没有注意到的缺陷, ForFiles在注释中已经解决了这些缺陷

  • if @isdir==FALSE ,则应将目录排除在处理之外,以免将其传递给del命令

  • 应该使用@path变量而不是@file ,以将完全限定的路径传递给del命令,否则它将无法在子目录中归档来删除它们。


重要的提示:

请注意在pushd命令之后使用条件运算符-双&符&& (与单个& -命令分隔符不同)。 它确保ForFiles (和popd )将被执行, 如果且仅当时,先前的pushd命令成功执行。

如果pushd命令无法映射网络路径或无法将目录切换到该路径,它可以防止当前目录中的文件被意外删除。
因此,请认真对待。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM