windows - 将文件以五个为一组移动到文件夹中?
问题描述
假设我有 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
等等..
解决方案
这是您想要的,更改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
命令我没有去掉,只是用来::
注释掉的,你可以去掉::重新测试。
推荐阅读
- spring-boot - @ExceptionHandler 捕获的异常不会被 MetricsWebFilter 记录
- mysql - 通过集群重启使用 Persistent Volume 持久化 MySQL pod 的数据
- c# - 如何将数据从 Windows 发送到 HID 键盘?
- node.js - 如何在 Tizen 设备上安装 NodeJS?
- java - 没有从 join() 方法中得到 InterruptedException
- reactjs - 如何解决 JSX 中的 if/else 语句?
- android - Flutter NetworkImage 无法从 url 加载 HEIC 图像
- python - 如何仅在需要时使用 anaconda python(在 linux 中)
- python - Python矩阵乘法:稀疏乘密集
- r - 循环在多个 Excel 工作簿中创建多个工作表