标题: [文件操作] 批处理含多级子文件夹内的指定格式文件复制到新文件夹 [打印本页]
作者: 001011 时间: 2023-11-14 01:30 标题: 批处理含多级子文件夹内的指定格式文件复制到新文件夹
本帖最后由 001011 于 2023-11-14 01:41 编辑
批处理含多级子文件夹内的指定格式(.xls)文件复制到新文件夹,文件名为原文件路径和原文件名的组合
放到新文件夹后 对文件经过处理后 再按照原路径还原回去(覆盖)
这段只能复制一层文件夹 不能多级子文件夹
复制- @echo off
- set "src=E:\A"
- set "dst=E:\B"
- for /f "delims=" %%a in ('dir /b /ad "%src%"') do (
- for %%b in ("%src%\%%a\*.xls") do (
- copy "%%b" "%dst%\%%a_%%~nxb"
- )
- )
- pause
复制代码
还原- @echo off
- set "src=E:\B"
- set "dst=E:\A"
- for /f "tokens=1-2 delims=_" %%a in ('dir /b "%dst%\*.xls"') do (
- copy "%dst%\%%a_%%b" "%src%\%%a\%%b"
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2023-11-14 08:20
本帖最后由 qixiaobin0715 于 2023-11-14 12:02 编辑
- @echo off
- set "src=E:\A"
- set "dst=E:\B"
- cd "%src%"
- for /f "delims=" %%a in ('dir /s /b /ad') do (
- pushd "%%a"
- if exist *.xls (
- for /f "delims=" %%b in ('dir /b /a-d *.xls') do (
- copy "%%b" "%dst%\%%~nxa_%%b"
- )
- )
- popd
- )
- pause
复制代码
还原:- @echo off
- set "src=E:\A"
- set "dst=E:\B"
- move "%dst%\*_*.xls" "%src%\"
- cd "%src%"
- for /f "tokens=1* delims=_" %%a in ('dir /b /a-d *_*.xls') do (
- for /f "delims=" %%i in ('dir /b /s /ad "%%a"') do (
- move "%%a_%%b" "%%i\"
- )
- )
- pause
复制代码
未测试,请慎用。
以上代码只会处理子文件夹中的指定格式的文件,如果需要同时处理E:\A文件夹下的文件还需要增加几行代码。
作者: 001011 时间: 2023-11-14 09:47
回复 2# qixiaobin0715
提示 找不到文件啊
作者: qixiaobin0715 时间: 2023-11-14 09:54
回复 3# 001011
说明某些文件夹中不存在xls文件,加个判断,已修改。
作者: Five66 时间: 2023-11-14 10:11
组合分隔符默认为英文下划线(即_),因此文件名和文件路径不要有英文下划线(即_),不然还原会出错,组合而成的文件名过长时也会出错
复制- @echo off
-
- set "src=E:\A"
- set "dst=E:\B"
- set s=_
-
- for /r "%src%" %%a in ("*.xls") do (
- set file=%%a
- setlocal enabledelayedexpansion
- set file2=!file:~3!
- set file2=!file2:\=%s%!
- copy /y "!file!" "!dst!\!file2!"
- endlocal
- )
- pause
复制代码
还原- @echo off
-
- set "src=E:\A"
- set "dst=E:\B"
- set s=_
-
- for %%a in ("%dst%\*.xls") do (
- set file=%%~nxa
- setlocal enabledelayedexpansion
- set srcd=!src:~0,3!
- set srcp=!file:%s%=\!
- copy /y "!dst!\!file!" "!srcd!!srcp!"
- endlocal
- )
- pause
复制代码
作者: 001011 时间: 2023-11-14 10:23
本帖最后由 001011 于 2023-11-14 10:33 编辑
回复 4# qixiaobin0715
OK OK 感谢 感谢
作者: qixiaobin0715 时间: 2023-11-14 13:01
回复 6# 001011
pushd后面成空白,忘记加路径了,已修改。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |