需要批处理文件

时间:2013-04-02 09:30:48

标签: batch-file

源路径“S:\ nk \ Reporting \ 03.2013” 目标路径“S:\ nk \ final_reporting

想要从源到目标路径moov文件“Balance Sheet.xls”

注意:(日期文件夹每月更换,即2013年4月,2013年5月......等)

我可以使用批处理文件来执行此活动吗?

2 个答案:

答案 0 :(得分: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

第一个小问题是%date% MAGIC VARIABLE 。它由OS提供。如果您使用

分配值HOWEVER,则为DATE
set date="%date:~7,2%-%date:~4,2%-%date:~10,4%"

然后环境变量%date%会覆盖 MAGIC VARIABLE (所以不要这样做 - 与%RANDOM%和其他人一样......)

所以,我展示的代码使用的是我的日期格式 - 您需要做的就是改变以适合您的。

基本上,today正在设置date

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

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

答案 1 :(得分:-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返回没有前导零的月份,因此您必须使用简单的算法对其进行转换。