想要从折叠中删除文件时暂停 5 秒 [重复]
Posted
技术标签:
【中文标题】想要从折叠中删除文件时暂停 5 秒 [重复]【英文标题】:Want pause for 5 sec in deleting files from fold [duplicate] 【发布时间】:2018-06-28 11:23:40 【问题描述】:我正在运行一个窗口脚本来从包含大约 10k 个文件的文件夹中删除文件。我希望我的脚本命令是:
forfiles /p "path" /s /d -30 /c "cmd /c del @file : date >= 30 days >NUL"
,应该删除10个文件然后等待5秒然后再次开始删除然后再次等待5 secons
等等?
我想要这个功能,因为如果一次删除10k个文件,它会妨碍服务器的正常工作
【问题讨论】:
把你的问题写清楚。如果要在批处理中暂停,请使用timeout /t <secondes>
问题可能是您使用的命令ForFiles
。当它运行时,它会为每个匹配的文件打开一个新的cmd.exe
实例。所以你有效地打开cmd.exe
,删除一个文件并关闭cmd.exe
10000 次。另外为了您的信息,我建议您使用 @path
而不是 @file
并删除它之后的所有内容,除了结束双引号,因为它无效。
试试这个:timeout /T 5 /nobreak
【参考方案1】:
实现起来很简单
timeout /T 5
对于较旧的 Windows 操作系统,(Vista 之前的版本),其中 timeout
不可用,您可以简单地使用 ping
进行等待。每个回显请求之间有第二个延迟,因此在 5 秒内我们需要 6 个ping
计数。因此,通过运行以下命令,它将等待 5 秒。
ping 127.0.0.1 -n 6 >nul
为了让您了解如何进行删除,您可以执行以下操作:(我使用的是echo
,但您可以循环使用del
)。
:start
for /L %%G IN (1,1,10) DO echo "Some command"
timeout /T 5
goto start
【讨论】:
【参考方案2】:您可能可以使用与ForFiles
不同的命令并运行脚本而无需暂停或无需将文件数量拆分为更小的块。
这使用 RoboCopy
及其 /Move
选项:
@Echo Off
Set "_source=C:\Users\Sumit-Anand\Folder"
Set "_daysage=30"
Set "_scratch=%TEMP%\~%random%"
MD "%_scratch%"
RoboCopy "%_source%" "%_scratch%" /E /Move /Create /MinAge:%_daysage%
RD /S/Q "%_scratch%"
您需要更改的只是3
和4
行上变量的值字符串,确保不要删除结束双引号或在新字符串中包含任何双引号.
【讨论】:
以上是关于想要从折叠中删除文件时暂停 5 秒 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Spring 3整合Quartz 2实现手动设置定时任务:新增,修改,删除,暂停和恢复----每一个你不满意的当下,都有一个你不曾努力的过去