批处理脚本:递归移动文件夹内所有文件

使用及其说明

  1. 复制代码到空白文本文件,修改后缀名为bat。
  2. 双击运行,输入文件夹位置后回车。

说明

  • 不支持命令行参数,相信会用参数调用的大佬有能力自己修改代码
  • 需确保源目录和目标目录都有读写权限
  • Windows操作系统
  • 代码经过测试

代码

@echo off
chcp 65001 & cls
setlocal enabledelayedexpansion
title 文件移动 v1.1 Author: YuAn

:start_prog

:: 设置源目录和目标目录
set /p source_folder=源目录: 
:: 检查源目录是否存在,如果不存在则退出
if not exist "%source_folder%" (
    echo ERROR: 位置 "%source_folder%" 不存在,请重新输入 
    echo. & goto start_prog 
)

set /p target_folder=目标位置: 
:: 检查目标目录是否存在,如果不存在则创建
if not exist "%target_folder%" (
    echo WARNING: 位置 "%target_folder%" 不存在,正在创建… 
    mkdir "%target_folder%"
)

:: 遍历源目录及其子目录中的所有文件
set f_count=0
set m_count=0
for /r "%source_folder%" %%f in (*) do (
    set "file=%%f"
    set "filename=%%~nxf"
    set "target_file=%target_folder%\!filename!"

    :: 移动文件
    move "!file!" "!target_file!" >nul
    if errorlevel 1 (
        echo WARNING: 移动失败:!file!
        set /a m_count+=1
    ) else (
        echo INFO: 移动文件:!file!
        set /a f_count+=1
    )
)

echo %f_count% 个文件移动成功,%m_count% 个文件移动失败 
echo 按下任意按键退出 
pause >nul & exit

代码描述

此脚本用于将指定文件夹及其子文件夹中的所有文件移动到另一个文件夹,将会不可逆地破坏目录树结构,对于提取多层嵌套的复杂文件夹结构中的大量文件非常有用。

posted @ 2024-11-26 15:55  ren_miruu  阅读(81)  评论(0编辑  收藏  举报