繁体   English   中英

Windows Shell批处理脚本复制最后10个修改的文件

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

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