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

[文件操作] 文件批量改名的问题求助(较复杂)

假设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:31 编辑

仅仅是繁琐谈不上复杂, P基础学好了就可解决.
下面是不够严谨的方案:
  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. :start ============================================================
  4. for /f "tokens=* delims=" %%a in ('dir /ad/s/b "xyz\"') do (
  5. pushd "%%~a.\..\..\"&(for %%i in ("!cd!") do set "_path=%%~ni")&popd
  6. if /i "!_path!"=="xyz" (echo 改名&echo 移动&echo 删除)
  7. )
复制代码
“阿姐走了。。。可是。。。我。。。我愿意。”

TOP

本帖最后由 caruko 于 2011-9-15 12:09 编辑
  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. set "rpath=d:\xyz"
  3. for /r "%rpath%" %%a in (*) do (
  4. set "p=%%~dpa"
  5. set "p=!p:%rpath%=!"
  6. call :change "%%a!p:\=" "!"&&rmdir "%%~dpa" 2>nul
  7. )
  8. pause>nul
  9. goto :eof
  10. :change
  11. if not %~3.==. (
  12. set "name=%~n1"
  13. set "name=!name:~0,4!"
  14. set newname=%~3@!name!%~x1
  15. echo,move %1 "%rpath%\%~2\!newname!"
  16.         exit /b 0
  17. )
  18. exit /b 1
复制代码

TOP

返回列表