2013-04-02 98 views
-2

源路径 “S:\ NK \报告\ 03.2013”​​ 目标路径“S:\ NK \ final_reporting需要一个批处理文件

想对MOOV文件 “从源头平衡Sheet.xls” 到目标路径

注:(日期文件夹改变月份ie04.2013,05.2013 ....等每)

我可以有一个批处理文件来完成这个活动

回答

-1

您需要从当前日期提取月份和年份。 %date%的问题在于它没有可预测的格式,因为它可能会被用户更改。更可靠的方法是改用wmic

试试这个代码,让你开始

@echo off 
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
    set /a mm=100+%%D 
    set mmyyyy=%mm:~1%.%%F 
) 
echo move S:\nk\Reporting\%mmyyyy%\balance.xls S:\nk\final_reporting 

WMIC返回月份没有前导零,所以你有一个简单的算术来改变它。

+0

wmic不包含在xp – Endoro

+0

OP没有在问题中指定XP。无论如何,它是在XP专业及以上版本,并从微软免费下载其他版本。 –

+0

直到现在,OP在他的问题中并没有排除xp。网络中有数千次分发工具,大部分是免费的。 – Endoro

0
@ECHO OFF 
SETLOCAL 
FOR %%i IN (20/11/2012 20/01/2012 20/01/2013 20/01/2009 20/04/2013 
      20/02/2013 20/03/2013 20/08/2012 20/09/2000 20/01/2000 
     ) DO CALL :calc %%i 
GOTO :eof 

:calc 
SET dayte=%1 
SET today=%dayte:~0,2%-%dayte:~3,2%-%dayte:~-4% 
SET /a lastmonth=%dayte:~-4%%dayte:~3,2%-1 
IF %lastmonth:~-2%==00 SET /a lastmonth-=88 
SET lastmonth=%lastmonth:~-2%.%lastmonth:~0,4% 
ECHO with date=%dayte% today=%today% lastmonth=%lastmonth% 

GOTO :eof 

第一个小问题是?是一个MAGIC VARIABLE。它由操作系统提供。 HOWEVER如果一个值赋给DATE因为你有你的

set date="%date:~7,2%-%date:~4,2%-%date:~10,4%" 

那么环境变量%date%覆盖MAGIC变量(所以不要做 - 同样与%RANDOM%等...)

因此,我所显示的代码使用了我的日期格式 - 您需要做的只是更改以适应您的日期格式。

从本质上讲,你已经建立date

lastmonth设置为年份和月份的级联today被设置,那么一个被减去,所以在四月,2013 lastmonth将被设置为/a算术结果的表达式(201304 - 1) 然后,如果lastmonth的最后两个字符现在为“00”,那么日期为1月,因此通过减去88,我们减去1年并添加12个月。 100-12 = 88。

然后将结果重新格式化为所需结构,并完成所有工作!

+0

thx彼得为你的帮助..我已经描述了更多,我在找什么,你可以再次halp? – user2195198

相关问题