我尝试创建一个脚本,从目录中复制最近10个修改过的文件。
我正在尝试使用此代码:
for /F %%I IN ('DIR *.* /B /A:-D-H /O:-D') do (
copy /Y %%I C:\DestinationDir
)
此代码复制所有这些代码,如何停止" for"经过第10次迭代?
====================
第二次尝试解决这个问题。
我尝试用两个脚本分割它,但是"退出/ b" (或只有"退出")完成所有批处理过程:
FirstScript,相同的代码,但在复制最新文件后尝试退出:
for /F %%I IN ('DIR *.* /B /A:-D-H /O:-D') do (
copy /Y %%I C:\DestinationDir
exit /b
)
SecondScript,循环10次调用FirstScript:
for /l %x in (1, 1, 10) do (
FirstScript.bat
)
答案 0 :(得分:2)
这是一个没有延迟扩展且不使用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
答案 1 :(得分:1)
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
答案 2 :(得分:0)
试试这个:
@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"
)
在看到所需结果时删除回声。