假设我有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
以此类推。
答案 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
命令,只是用::
注释掉了它们,您可以删除::再次测试它们。