簡體   English   中英

創建Win7批處理文件以從所有文件夾中復制文件

[英]Create Win7 batch file to copy files out from all folders

我正在嘗試編寫一個批處理文件來執行以下任務:

  1. 我在一個文件夾(ABC)中有20個子文件夾(牛奶,奶酪,蛋白質... 每個子文件夾在.csv中都有大約15個月度文件,分別命名為2013-10-01、2013-09-02、2013-07-31....。

  2. 這些月度文件按月添加,並且沒有關於其名稱的模式,例如,可能是10月的第一天,但​​11月的第四天。 因此,每個月我都會向每個子文件夾添加一個新文件,即文件數量在增加;

  3. 每個月,對於每個子文件夾/類別,我都想將最近的9個每月文件復制到另一個位置,例如CDE文件夾

  4. 將它們復制到文件夾CDE之后 ,我將它們全部合並到一個文件中,該文件具有使用當前時間(%% d-%% e-%% f)定義的唯一名稱。 這樣,我可以每個月獲得每個類別的月度文件。

我能夠為第4步編寫代碼,並且想知道你們中的任何人在第3步中是否可以提供幫助。 現在,我必須每次都手動復制並粘貼所有20個子文件夾中的9個文件。 這是非常低效的,我知道一些批處理命令絕對可以使過程更快,更容易。

非常感謝你!

setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir abc /b /o-d') do (set /a a=0&for /f "delims=" %%j in ('dir "abc\%%~i" /b /o-d') do (set /a a+=1&if !a! LEQ 9 (copy /Y "abc\%%~i\%%~j" cde)))

將此放在abc和cde所在的文件夾中
如果這不是您想要的,請詳細說明。

編輯修復了“復制所有文件”的問題。

這應該執行以下操作:(更改c:\\ cde和c:\\ abc)

1)從文件夾中復制9個最新文件
2)將它們全部合並到一個名為foldername-HHMMSS的文件中(來自time變量)
3)在c:\\ ABC文件夾中創建foldername-HHMMSS文件
4)刪除9個復制的文件
5)對每個文件夾重復

@echo off
set "source=D:\ABC"
set "target=C:\files\CDE"
setlocal enabledelayedexpansion
md "%target%" 2>nul
for /d /r "%source%" %%a in (*) do (
  pushd "%%a"
     set num=0
         for /f "delims=" %%b in ('dir /o-d /b /a-d') do (
           set /a num+=1
           if !num! LSS 10 copy "%%b" "%target%" >nul
         )
     set t=!time!
     set t=!t:~0,2!!t:~3,2!!t:~6,2!
     copy "%target%\*.*" "%source%\%%~nxa-!t!" >nul
     echo "%source%\%%~nxa-!t!" created from "%%a"
     if defined target del "%target%\*.*?"
  popd
)
pause

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM