本帖最后由 tmplinshi 于 2011-6-30 14:53 编辑
- @echo off
- setlocal enabledelayedexpansion
-
- rem 注意:文件名、路径、文件内容中不能含有半角感叹号
-
- rem ------------------- 设置 -------------------
- set "SrcFolder=D:\目录"
- set "log=D:\目录\log\log.xml"
- set "DestFolder=A"
-
- rem --------------------------------------
- md "%SrcFolder%" 2>nul
- cd /d "%SrcFolder%"
- md "%DestFolder%" 2>nul
- for %%a in ("%log%") do md "%%~dpa" 2>nul
- del .tmp 2>nul
- set _ExistHead=
-
- rem ------------------- 提取符合条件的文件 -------------------
- for %%a in (*.xml) do (
- set fname=%%a
- rem 判断一:文件名字符数要大于 21 位
- if "!fname:~21!" neq "" (
- rem 判断二:前 12 位必须是数字
- for /f "tokens=* delims=0123456789" %%a in ("!fname:~0,12!") do (
- if "%%a" == "" (
- rem 判断三:17 位后面的字符必须大于 Z,基本上意味着是中文
- if "!fname:~17!" gtr "Z" (
- call :next >>.tmp
- )))))
-
- if not exist .tmp exit /b
-
- rem ------------------- 完成 -------------------
- move .tmp "%log%"
- >>"%log%" echo ^</files^>
- exit /b
-
- rem ------------------- 写入 xml,及移动文件 -------------------
- :next
- rem 设置年、月、日变量,并去除月、日开头的 0
- set /a yyyy = %fname:~0,4%, m = 1%fname:~4,2% - 100, d = 1%fname:~6,2% - 100
-
- rem 把 %log% 文件中非“</files>”的行输出到 .tmp
- if not defined _ExistHead (
- if not exist "%log%" (
- rem 不存在 %log% 文件,则创建 %log% 文件头
- echo ^<?xml version="1.0" encoding="gbk" ?^>
- echo ^<files^>
- ) else (
- rem 不输出 log 中的“</files>”
- findstr /v "\<</" "%log%"
- )
- set _ExistHead=#
- )
-
- echo ^<file year="%yyyy%" month="%m%" day="%d%" name="XXXX" url="服务器路径/A/%fname%" /^>
-
- move "%fname%" "%DestFolder%"
-
- goto :eof
复制代码
|