[英]Windows Shell Batch Script to copy the last 10 modified files
我正在尝试创建一个脚本,以从目录中复制最后10个修改的文件。
我正在尝试使用以下代码:
for /F %%I IN ('DIR *.* /B /A:-D-H /O:-D') do (
copy /Y %%I C:\DestinationDir
)
此代码复制了所有这些代码,如何在第10次迭代后停止“ for”?
====================
第二尝试解决这个问题。
我尝试将其拆分为两个脚本,但是“ exit / b”(或仅“ exit”)完成了所有批处理过程:
FirstScript,相同的代码,但是在复制最新文件后尝试退出:
for /F %%I IN ('DIR *.* /B /A:-D-H /O:-D') do (
copy /Y %%I C:\DestinationDir
exit /b
)
SecondScript,调用FirstScript循环10次:
for /l %x in (1, 1, 10) do (
FirstScript.bat
)
这是一种无需延迟扩展且无需使用FIND或FINDSTR的变体。 当我有意除以零时,我有条件地退出循环。
set cnt=10
for /f "eol=: delims=" %%F in ('dir /o-d /a-d-h /b') do (
copy /y "%%F" c:\destinationDir
2>nul set /a 1/(cnt-=1) || goto :break
)
:break
for /f "tokens=1,* delims=:" %%a in ('dir /o-d /a-d-h /b * ^| findstr /n "^"') do (
if %%a gtr 10 goto done
copy /y "%%b" c:\destinationDir
)
:done
尝试这个:
@echo off
setlocal enabledelayedexpansion
set cnt=0
for /f "tokens=1,2* delims=[]" %%b in (
'dir /b /a-d-h /o-d^|find /n /v ""') do (
set /a cnt+=1
if !cnt! LEQ 10 echo copy /y "%%c" "c:\DestinationDir"
)
当您看到所需的结果时,请删除回声。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.