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