标题: [文件操作] [分享]批处理移动子文件夹下的文件到当前文件夹并保留目录信息 [打印本页]
作者: Batcher 时间: 2023-9-27 13:27 标题: [分享]批处理移动子文件夹下的文件到当前文件夹并保留目录信息
【问题描述】
当前目录下有若干个文件夹,每个文件夹下有级数不等的子文件夹,每个子文件夹下有若干个文件。
需要把每个文件夹及子文件夹下的文件都移动到当前目录下。
同时把每一级文件夹的名称添加到文件名前面,中间用三个空格隔开。
移动文件之后,删除空文件夹。
待处理的文件夹名称保存在当前目录下的“文件夹列表.txt”里面,例如:
文件夹列表.txt复制代码
处理之前的目录结构:- E:\M\1.bat
- E:\M\FolderA
- E:\M\FolderD
- E:\M\FolderH
- E:\M\文件夹列表.txt
- E:\M\FolderA\1.txt
- E:\M\FolderA\B!
- E:\M\FolderA\B!\2.txt
- E:\M\FolderA\B!\C
- E:\M\FolderA\B!\C\3.txt
- E:\M\FolderD\4.txt
- E:\M\FolderD\E!
- E:\M\FolderD\E!\5.txt
- E:\M\FolderD\E!\F
- E:\M\FolderD\E!\F\6.txt
- E:\M\FolderD\E!\F\G
- E:\M\FolderD\E!\F\G\7.txt
复制代码
处理之后的目录结构:- E:\M\1.bat
- E:\M\FolderA 1.txt
- E:\M\FolderA B! 2.txt
- E:\M\FolderA B! C 3.txt
- E:\M\FolderD 4.txt
- E:\M\FolderD E! 5.txt
- E:\M\FolderD E! F 6.txt
- E:\M\FolderD E! F G 7.txt
- E:\M\FolderH
- E:\M\文件夹列表.txt
复制代码
1.bat的内容应该是怎样的?
作者: Batcher 时间: 2023-9-27 13:28
【解决方案】
请参考Q-04和Q-05把bat文件和txt文件都保存为UTF-8编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA- @echo off
- chcp 65001 >nul
- cd /d "%~dp0"
- set "StrPrefix=%~dp0"
- for /f "delims=" %%a in ('type "文件夹列表.txt"') do (
- echo 正在处理文件夹 %%a
- pushd "%%a"
- for /f "delims=" %%i in ('dir /b /s /a-d') do (
- echo,%%i
- set "OldName=%%i"
- setlocal enabledelayedexpansion
- set "NewName=!OldName:%StrPrefix%=!"
- set "NewName=!NewName:\= !"
- move "!OldName!" "%~dp0!NewName!"
- endlocal
- )
- for /f "delims=" %%i in ('dir /b /s /ad ^| sort /r') do (
- if exist "%%i" (
- rd "%%i"
- )
- )
- popd
- if exist "%%a" (
- rd "%%a"
- )
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |