创建Win7批处理文件以从所有文件夹中复制文件

时间:2013-10-07 19:50:22

标签: batch-file copy move xcopy

我正在尝试编写批处理文件来执行以下任务:

  1. 我在一个文件夹(ABC)中有20个子文件夹(牛奶,奶酪,蛋白质......)。每个子文件夹在.csv中有大约15个月度文件,命名为2013-10-01,2013-09-02,2013-07-31 ......

  2. 这些月度文件是按月添加的,并且没有关于其名称的模式,例如,它可能是10月的第一天,也可能是11月的第4天。因此,每个月我都会向每个子文件夹添加一个新文件,即文件数量正在增加;

  3. 每个月,对于每个子文件夹/类别,我想将最近的9个月度文件复制到另一个位置,例如文件夹CDE ;

  4. 将它们复制到文件夹CDE 后,我将它们全部放在一个文件中,该文件使用当前时间定义的唯一名称(%% d - %% e - %% f) 。通过这种方式,我可以每月为每个类别提供月度文件。

  5. 我能够编写第4步的代码,我想知道是否有人可以帮助第3步。我现在每次都必须手动复制并粘贴所有20个子文件夹中的9个文件。这是非常低效的,我知道一些批处理命令肯定会使过程更快更容易。

    非常感谢!

2 个答案:

答案 0 :(得分:0)

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所在的文件夹中 如果这不是你想要的,请你详细说明。

答案 1 :(得分:0)

编辑修复了“复制所有文件”问题。

这应该执行以下操作:(更改c:\ cde和c:\ abc)

1)从文件夹中复制9个最新文件 2)将它们全部合并到一个名为foldername-HHMMSS的文件中(来自时间变量)
3)foldername-HHMMSS文件在c:\ ABC文件夹中创建 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
相关问题