本帖最后由 leonca 于 2022-11-4 13:39 编辑
批处理编写,将代码复制,另存为bat,同时注意编码为ANSI。
批处理实现的功能是,将某个目录下各级子目录的多个文件类型,汇聚到指定的其他目录。
例如,D:\TEST目录下有
D:\TEST\temp1\1.mp4
D:\TEST\temp2\2.mp4
D:\TEST\temp3\3.mp4
使用本批处理可以一次性将所有mp4文件移动到指定的文件夹。
注意:
1、子目录的文件不能重名,否则会被重名文件覆盖。因为本批处理不具有重命名的功能。
2、本批处理单纯就是为了方便汇聚某目录下各种文件,如果需要重命名文件避免被覆盖的话,需要修改批处理。
[Bash shell] 纯文本查看 复制代码 @echo off
echo 本批处理将汇总目录下(包含子目录)内的全部指定类型文件到指定目录
echo,
set str=%~dp0
set /p "str= 请输入要操作的目录路径(直接回车,则默认处理批处理所在文件夹)"
cd /d "%str%"
echo,
set /p "FileType= 输入文件名或文件类型,可以输入多个类型,使用空格隔开(例如:*星球*.mp4 或 *.mp4):"
echo,
set /p "DstFolder= 移动到哪个文件夹(例如D:\test):"
if not exist "%DstFolder%" (
echo 不存在文件夹"%DstFolder%",正在创建文件夹"%DstFolder%"
md "%DstFolder%"
echo,& echo 创建完毕
)
echo,& echo 正在移动文件。。。。。。
setlocal enabledelayedexpansion
set num=0
for /f "delims=" %%i in ('dir /a-d /s /b %FileType%') do (
set /a num+=1
echo 正在移动第 !num! 个文件----- %%i
move "%%i" "%DstFolder%">nul 2>nul
)
echo,
echo 移动完成。。。。。。。。。
echo,
echo 一共移动 !num! 个文件
setlocal disabledelayedexpansion
echo,&pause |