如何编写Windows批处理脚本以将最新文件从目录复制到新文件夹?

时间:2013-03-14 17:49:53

标签: windows date for-loop batch-file cmd

我需要移动,剪切和放大将目录中的最新文件粘贴到新创建的文件夹位置。该文件由我没有权限的单独程序创建。新目录位置由批处理文件创建,该文件已在下面复制。我从代码示例中找到了一些基础。我把这些碎片拼凑起来只是有点麻烦。如何将最新文件从目录位置移动到新目录位置?

:: Auto directory date batch (MMDDYYYY format)
:: First parses month, day, and year into mm , dd, yyyy formats and then combines to be DDMMYYYY
:: Setups %date% variable
:: @author Deepu Mohan Puthrote www.deepumohan.com
@echo off
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET date=%yyyy%%mm%%dd%
echo New folder name %date%
MKDIR %date%

我添加到第一个.bat将文件移动到新目录,因为我尝试将文件移动到新目录但是我收到了错误

FOR /F "delims=" %%I IN ('DIR . /B /O:-D') DO COPY %%I <<%date%>>
pause

&LT;&LT;此时出乎意料

2 个答案:

答案 0 :(得分:3)

试试这个:

for /f "tokens=*" %%i in ('dir /od /b /a-d') do set "file=%%~i"
move "%file%" "%date%"

BTW:不要对批处理变量使用默认环境变量名称(日期)。

答案 1 :(得分:2)

您使用FOR循环走在正确的轨道上。你只想做一个MOVE而不是COPY,然后在处理完第一个项目后退出循环。

FOR /F "delims=" %%I IN ('DIR . /B /O:-D /A-D') DO (
    MOVE "%%I" "%date%"
    GOTO :EOF
)

我在/A-D中添加了DIR以排除目录,并删除了<<>>。 (我不确定为什么那些人会在那里开始。)