【发布时间】:2014-12-29 20:53:04
【问题描述】:
我有数千个文件需要移动到以修改日期的年份和月份命名的文件夹中。我以前成功地做到了这一点,但由于某种原因它失败了,因为主字符串值没有被设置。这是我所拥有的:
一个包含 3 个文件的测试文件夹。所有文件的名称都很长。如: LocalId=99a73-f852d-407907-98ce-4ab02dde5b41_SessionId=999999.flv
以上文件名代表我正在使用的文件。
它们存在于一个文件夹中:E:\backups\test
它们是此文件夹中唯一的项目。
当我运行测试命令时:for /f %a in ("E:\backups\test*.*") do set filedate=%~ta
返回正确的信息:set filedate=12/29/2014 12:44 PM
我的批处理文件如下所示:
@rem ############################################################
@rem SETTING TIME AND DATE PARAMETERS FOR CREATION OF LOG FILES
set hr=%time:~0,2%
if "%hr:~0,1%" equ " " set hr=0%hr:~1,1%
set outFile=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%
@rem ############################################################
@rem ############################################################
@rem SETTING PATHS FOR PROCESSING LOG FILES
SETLOCAL ENABLEDELAYEDEXPANSION
SET dir=E:\backups\test
SET logDir=C:\scripts\logs
SET datesort=%logDir%\logfile.name.%outFile%.log
@rem ############################################################
@rem PARSING FILE MODIFIED DATE FOR YEAR AND MONTH
@rem CALLS PROCESS TO SET YEAR AND MONTH
@rem MOVES FILES INTO DATED FOLDERS
@rem ROBOCOPY TAKES CARE OF FOLDER CREATION AUTOMATICALLY
@rem SETS YEAR AND MONTH
FOR /f %%a IN ('dir /b /a-d "%dir%\*.flv" ') DO (
SET "filedate=%%~ta"
CALL :finddate
robocopy "%dir%" /XX /r:10 %dir%\!year!!month!\ "!filedate!" /MOV >> %datesort%
)
GOTO sendmail
:finddate
SET year=%filedate:~6,4%
SET month=%filedate:~0,2%
GOTO :EOF
GOTO finddate
:sendmail
@rem ############################################################
@rem SENDING MAIL NOTIFICATION WITH LOG
<command for sending email notification>
我在这里缺少什么来完成这项工作?我确定这很简单。也许我只是太累了,无法接受它。
【问题讨论】:
标签: sorting date batch-file for-loop move