将日期变量添加到bat文件中,该文件可在文件夹

时间:2017-08-07 14:49:19

标签: file batch-file scripting directory file-moving

我找到了一个脚本,它将目录中的最新文件复制到另一个目录中并将其重命名为静态名称,这样就可以了。

我希望修改它以满足每天创建的文件夹中的文件。

所以文件夹结构是:

C:\Logs\Check\20170806
C:\Logs\Check\20170807 etc

该脚本显示:

@echo off
set source="C:\test case"
set target="C:\Users\sam.green\Desktop\Random Folder\output.txt"

FOR /F "delims=" %%I IN ('DIR %source%\*.* /A:-D /O:-D /B') DO COPY %source%\"%%I" %target% & echo %%I & GOTO :END
:END
TIMEOUT 4

有没有办法让脚本查看今天的文件夹并获取最新文件并将其复制到静态位置和文件名?

我认为添加这个(但没有时间)可能有所帮助,但不确定如何将其添加到脚本中:

set d=%t:~10,4%%t:~7,2%%t:~4,2%_%t:~15,2%%t:~18,2%%t:~21,2%

我在想这样的事情会起作用:

@echo off 
set source="C:\test case\%todaysdate%\ 
set target="C:\Users\sam.green\Desktop\Random Folder\output.txt" 
set todaysdate="%yyyy%%mm%%dd%" 

FOR /F "delims=" %%I IN ('DIR %source%%todaysdates%\*.* /A:-D /O:-D /B') DO COPY %source%\"%%I" %target% & echo %%I & GOTO :END 
:END 
TIMEOUT 4

更新,所以我尝试了这个,但它还在复制最新的文件,测试用例"文件夹:

@echo off
set todaysdate="%yyyy%%mm%%dd%"
set source="C:\test case\%todaysdate%"
set target="C:\Users\sam.green\Desktop\Random Folder\output.txt"

FOR /F "delims=" %%I IN ('DIR %source%\%todaysdate%*.* /A:-D /O:-D /B') DO COPY %source%\%todaysdate%"%%I" %target% & echo %%I & GOTO :END
:END
TIMEOUT 4

在实现%todaysdate%并在代码的变量和正文中指定之后,我也尝试了这个:

@echo off
set todaysdate="%yyyy%%mm%%dd%"
set source="C:\test case\"
set target="C:\Users\sam.green\Desktop\Random Folder\output.txt"

FOR /F "delims=" %%I IN ('DIR %source%\%todaysdate%*.* /A:-D /O:-D /B') DO COPY %source%\%todaysdate%"%%I" %target% & echo %%I & GOTO :END
:END
TIMEOUT 4

最新版本的代码:

@echo off
for /f %%a in ('powershell -NoP -C "get-date -f "yyyyMMdd"') Do Set today=%%A
set "source=C:\test case\%today%"
set "target=C:\Users\sam.green\Desktop\Random Folder\output.txt"
Pushd "%source%"
FOR /F "delims=" %%I IN ('DIR "*.*" /A:-D /O:-D /B') DO COPY "%%I" "%target%" & echo %%I & GOTO :EOF
Popd
TIMEOUT 10

1 个答案:

答案 0 :(得分:1)

@echo off
for /f %%A in ('powershell -NoP -C "get-date -f \"yyyyMMdd\""') Do Set today=%%A

set "source=C:\test case\%today%"
set "target=C:\Users\sam.green\Desktop\Random Folder\output.txt"

Pushd "%source%" || (Echo Dir %source% not found&goto :END)

FOR /F "delims=" %%I IN ('DIR /B/A-D/O-D * 2^>Nul') DO (
    COPY /Y "%%I" "%target%" >Nul && echo copied %%~fI to %target%
    GOTO :END
)
:END
Popd
TIMEOUT 10

编辑对我的本地ramdisk进行了测试 - 现在应该可以使用。