标题: 按文件名移动文件的批处理如何精简?
[打印本页]
作者: achu
时间: 2010-7-29 10:17
标题: 按文件名移动文件的批处理如何精简?
将同一目录下EXCEL文件移动到相应文件夹,文件名为“x月份aa”、“第x季度bb”、“第X期CC”,根据命名相应移到文件夹下,对应关系见下表
文件名 文件夹 备注
n月份aa xx\n月 aa与xx是对应关系
第n季度bb yy\n季度 bb与yy是对应关系
第n期cc zz\n期 cc与zz是对应关系
代码如下,经过一位大侠指点,已经精简了很多,感觉重复代码还是不少,不知道能否再精简.请大家多多指点!谢谢!
@echo off
setlocal enabledelayedexpansion
for /f %%i in ('dir /b *.xls') do (
for /f "tokens=1,3,4 delims=_" %%a in ('dir /b %%i') do (
set "t=%%c"
set "t=!t:月份=:!"
if /i not "!t!" equ "%%c" (
for /f "tokens=1,2 delims=:." %%e in ("!t!") do (
set str=%%f
if "!str!"=="aa" set pname=xx
if "!str!"=="bb" set pname=yy
if "!str!"=="cc" set pname=zz
if "!str!"=="dd" set pname=uu
if "!str!"=="ee" set pname=vv
echo !pname!
)
)
set "t=!t:季度=:!"
if /i not "!t!" equ "%%c" (
for /f "tokens=1,2 delims=:." %%e in ("!t!") do (
set "tt=%%e"
set "tt=!tt:~1,1!"
set str=%%f
if "!str!"=="aa" set pname=xx
if "!str!"=="bb" set pname=yy
if "!str!"=="cc" set pname=zz
if "!str!"=="dd" set pname=uu
if "!str!"=="ee" set pname=vv
echo !pname!
)
)
set "t=!t:期=:!"
if /i not "!t!" equ "%%c" (
for /f "tokens=1,2 delims=第:." %%e in ("!t!") do (
set str=%%f
if "!str!"=="aa" set pname=xx
if "!str!"=="bb" set pname=yy
if "!str!"=="cc" set pname=zz
if "!str!"=="dd" set pname=uu
if "!str!"=="ee" set pname=vv
echo !pname!
)
)
)
)
[
Last edited by achu on 2010-7-29 at 10:18 ]