簡體   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