找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18032|回复: 1

[文件操作] [分享]批处理移动子文件夹下的文件到当前文件夹并保留目录信息

[复制链接]
发表于 2023-9-27 13:27:07 | 显示全部楼层 |阅读模式
【问题描述】

当前目录下有若干个文件夹,每个文件夹下有级数不等的子文件夹,每个子文件夹下有若干个文件。
需要把每个文件夹及子文件夹下的文件都移动到当前目录下。
同时把每一级文件夹的名称添加到文件名前面,中间用三个空格隔开。
移动文件之后,删除空文件夹。
待处理的文件夹名称保存在当前目录下的“文件夹列表.txt”里面,例如:
文件夹列表.txt
  1. FolderA
  2. FolderD
复制代码
处理之前的目录结构:
  1. E:\M\1.bat
  2. E:\M\FolderA
  3. E:\M\FolderD
  4. E:\M\FolderH
  5. E:\M\文件夹列表.txt
  6. E:\M\FolderA\1.txt
  7. E:\M\FolderA\B!
  8. E:\M\FolderA\B!\2.txt
  9. E:\M\FolderA\B!\C
  10. E:\M\FolderA\B!\C\3.txt
  11. E:\M\FolderD\4.txt
  12. E:\M\FolderD\E!
  13. E:\M\FolderD\E!\5.txt
  14. E:\M\FolderD\E!\F
  15. E:\M\FolderD\E!\F\6.txt
  16. E:\M\FolderD\E!\F\G
  17. E:\M\FolderD\E!\F\G\7.txt
复制代码
处理之后的目录结构:
  1. E:\M\1.bat
  2. E:\M\FolderA   1.txt
  3. E:\M\FolderA   B!   2.txt
  4. E:\M\FolderA   B!   C   3.txt
  5. E:\M\FolderD   4.txt
  6. E:\M\FolderD   E!   5.txt
  7. E:\M\FolderD   E!   F   6.txt
  8. E:\M\FolderD   E!   F   G   7.txt
  9. E:\M\FolderH
  10. E:\M\文件夹列表.txt
复制代码
1.bat的内容应该是怎样的?
 楼主| 发表于 2023-9-27 13:28:51 | 显示全部楼层
【解决方案】

请参考Q-04和Q-05把bat文件和txt文件都保存为UTF-8编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. chcp 65001 >nul
  3. cd /d "%~dp0"
  4. set "StrPrefix=%~dp0"
  5. for /f "delims=" %%a in ('type "文件夹列表.txt"')  do (
  6.     echo 正在处理文件夹 %%a
  7.     pushd "%%a"
  8.     for /f "delims=" %%i in ('dir /b /s /a-d') do (
  9.         echo,%%i
  10.         set "OldName=%%i"
  11.         setlocal enabledelayedexpansion
  12.         set "NewName=!OldName:%StrPrefix%=!"
  13.         set "NewName=!NewName:\=   !"
  14.         move "!OldName!" "%~dp0!NewName!"
  15.         endlocal
  16.     )
  17.     for /f "delims=" %%i in ('dir /b /s /ad ^| sort /r') do (
  18.         if exist "%%i" (
  19.             rd "%%i"
  20.         )
  21.     )
  22.     popd
  23.     if exist "%%a" (
  24.         rd "%%a"
  25.     )
  26. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 10:33 , Processed in 0.017870 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表