[英]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.