[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

【问题描述】

当前目录下有若干个文件夹,每个文件夹下有级数不等的子文件夹,每个子文件夹下有若干个文件。
需要把每个文件夹及子文件夹下的文件都移动到当前目录下。
同时把每一级文件夹的名称添加到文件名前面,中间用三个空格隔开。
移动文件之后,删除空文件夹。
待处理的文件夹名称保存在当前目录下的“文件夹列表.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的内容应该是怎样的?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

【解决方案】

请参考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. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表