将文件以五个为单位移动到文件夹中?

时间:2018-12-22 12:08:25

标签: windows batch-file

假设我有50个按名称排序的文件。我想创建一个批处理脚本,该脚本具有以下结果:

Files 1 through 5 -> 01-05
Files 6 through 10 -> 06-10

等等。如何创建批处理脚本来实现此目的? 请注意,01-05和06-10是目录名称。

编辑:详细信息

例如考虑一下:

  
      
  • 源目录:      
        
    • 101.mp4
    •   
    • 102.mp4
    •   
    • 103.mp4
    •   
    • 104.mp4
    •   
  •   

以此类推。

我想要这样的结果目录结构:

  
      
  • 目的地目录:
  •   
  • 101-105:

         
        
    • 101.mp4
    •   
    • 102.mp4
    •   
    • 103.mp4
    •   
    • 104.mp4
    •   
    • 105.mp4
    •   
  •   
  • 106-110:

         
        
    • 106.mp4
    •   
    • 107.mp4
    •   
    • 108.mp4
    •   
    • 109.mp4
    •   
    • 110.mp4
    •   
  •   

以此类推。

1 个答案:

答案 0 :(得分:1)

这就是您想要的,更改fileCount来更改每个子目录中的文件号:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set fileCount=5
set filesNow=0
set nameStart=000
set nameEnd=000
FOR /F "usebackq delims=" %%i IN (`dir /b /O:N *.mp4`) do (
    set /a filesNow+=1
    set /a tmpValue=filesNow %% fileCount
    ::echo !filesNow!
    ::echo !fileCount!
    ::echo %%i
    ::echo !tmpValue!
    if "!tmpValue!"=="1" (
        set "nameStart=%%~ni"
        mkdir _tmpDir_
    )
    move %%~nxi _tmpDir_\
    if "!tmpValue!"=="0" (
        rename _tmpDir_ !nameStart!-%%~ni
    )
    set "nameEnd=%%~ni"
)

if exist _tmpDir_ rename _tmpDir_ %nameStart%-%nameEnd%

您需要将它们放在bat / cmd文件中才能使用。
filesNow用于文件编号计数。
基本上是创建一个tmp文件夹并在其中移动文件,
当其中的文件达到编号时,请更改文件夹的名称。
我没有删除几个测试echo命令,只是用::注释掉了它们,您可以删除::再次测试它们。