源路径 “S:\ NK \报告\ 03.2013” 目标路径“S:\ NK \ final_reporting需要一个批处理文件
想对MOOV文件 “从源头平衡Sheet.xls” 到目标路径
注:(日期文件夹改变月份ie04.2013,05.2013 ....等每)
我可以有一个批处理文件来完成这个活动
源路径 “S:\ NK \报告\ 03.2013” 目标路径“S:\ NK \ final_reporting需要一个批处理文件
想对MOOV文件 “从源头平衡Sheet.xls” 到目标路径
注:(日期文件夹改变月份ie04.2013,05.2013 ....等每)
我可以有一个批处理文件来完成这个活动
您需要从当前日期提取月份和年份。 %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返回月份没有前导零,所以你有一个简单的算术来改变它。
@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。
然后将结果重新格式化为所需结构,并完成所有工作!
thx彼得为你的帮助..我已经描述了更多,我在找什么,你可以再次halp? – user2195198
wmic不包含在xp – Endoro
OP没有在问题中指定XP。无论如何,它是在XP专业及以上版本,并从微软免费下载其他版本。 –
直到现在,OP在他的问题中并没有排除xp。网络中有数千次分发工具,大部分是免费的。 – Endoro