[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 tmplinshi 于 2011-6-30 14:53 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 注意:文件名、路径、文件内容中不能含有半角感叹号
  4. rem ------------------- 设置 -------------------
  5. set "SrcFolder=D:\目录"
  6. set "log=D:\目录\log\log.xml"
  7. set "DestFolder=A"
  8. rem --------------------------------------
  9. md "%SrcFolder%" 2>nul
  10. cd /d "%SrcFolder%"
  11. md "%DestFolder%" 2>nul
  12. for %%a in ("%log%") do md "%%~dpa" 2>nul
  13. del .tmp 2>nul
  14. set _ExistHead=
  15. rem ------------------- 提取符合条件的文件 -------------------
  16. for %%a in (*.xml) do (
  17.     set fname=%%a
  18.     rem 判断一:文件名字符数要大于 21 位
  19.     if "!fname:~21!" neq "" (
  20.         rem 判断二:前 12 位必须是数字
  21.         for /f "tokens=* delims=0123456789" %%a in ("!fname:~0,12!") do (
  22.             if "%%a" == "" (
  23.                 rem 判断三:17 位后面的字符必须大于 Z,基本上意味着是中文
  24.                 if "!fname:~17!" gtr "Z" (
  25.                     call :next >>.tmp
  26. )))))
  27. if not exist .tmp exit /b
  28. rem ------------------- 完成 -------------------
  29. move .tmp "%log%"
  30. >>"%log%" echo ^</files^>
  31. exit /b
  32. rem ------------------- 写入 xml,及移动文件 -------------------
  33. :next
  34. rem 设置年、月、日变量,并去除月、日开头的 0
  35. set /a yyyy = %fname:~0,4%, m = 1%fname:~4,2% - 100, d = 1%fname:~6,2% - 100
  36. rem 把 %log% 文件中非“</files>”的行输出到 .tmp
  37. if not defined _ExistHead (
  38.     if not exist "%log%" (
  39.         rem 不存在 %log% 文件,则创建 %log% 文件头
  40.         echo ^<?xml version="1.0" encoding="gbk" ?^>
  41.         echo ^<files^>
  42.     ) else (
  43.         rem 不输出 log 中的“</files>”
  44.         findstr /v "\<</" "%log%"
  45.     )
  46.     set _ExistHead=#
  47. )
  48. echo ^<file year="%yyyy%" month="%m%" day="%d%" name="XXXX" url="服务器路径/A/%fname%" /^>
  49. move "%fname%" "%DestFolder%"
  50. goto :eof
复制代码
1

评分人数

TOP

返回列表