标题: [文件操作] 文件批量改名的问题求助(较复杂) [打印本页]
作者: yuanquan44534 时间: 2011-9-14 22:49 标题: 文件批量改名的问题求助(较复杂)
假设XYZ目录下子结构如下
XYZ
-AAA(子目录)
------aaa.txt
-BBB(子目录)
------bbb.txt
------123456(二级子目录)
------------ddd.txt
-CCC(子目录)
------ccc.txt
现在要遍历XYZ下所有目录 如果XYZ下类似ddd的二级子目录内有文件
则将文件名改为[email]ddd@1234.txt[/email](ddd@当前目录名的前4个字符)并且移动到一级子目录下,之后删除二级子目录。
处理后文件结构如下。
XYZ
-AAA
------aaa.txt
-BBB
------bbb.txt
[email]------ddd@1234.txt[/email]
-CCC
------ccc.txt
请各位大侠帮忙。
作者: hfg1977 时间: 2011-9-15 09:27
本帖最后由 hfg1977 于 2011-9-15 09:31 编辑
仅仅是繁琐谈不上复杂, P基础学好了就可解决.
下面是不够严谨的方案:- @echo off
- setlocal enabledelayedexpansion&cls
- :start ============================================================
- for /f "tokens=* delims=" %%a in ('dir /ad/s/b "xyz\"') do (
- pushd "%%~a.\..\..\"&(for %%i in ("!cd!") do set "_path=%%~ni")&popd
- if /i "!_path!"=="xyz" (echo 改名&echo 移动&echo 删除)
- )
复制代码
作者: caruko 时间: 2011-9-15 12:02
本帖最后由 caruko 于 2011-9-15 12:09 编辑
- @echo off&setlocal ENABLEDELAYEDEXPANSION
- set "rpath=d:\xyz"
- for /r "%rpath%" %%a in (*) do (
- set "p=%%~dpa"
- set "p=!p:%rpath%=!"
- call :change "%%a!p:\=" "!"&&rmdir "%%~dpa" 2>nul
- )
- pause>nul
- goto :eof
-
- :change
- if not %~3.==. (
- set "name=%~n1"
- set "name=!name:~0,4!"
- set newname=%~3@!name!%~x1
- echo,move %1 "%rpath%\%~2\!newname!"
- exit /b 0
- )
- exit /b 1
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |