File 将日期变量添加到在文件夹中查找最新文件的bat文件

File 将日期变量添加到在文件夹中查找最新文件的bat文件,file,batch-file,scripting,directory,file-moving,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" FO

我发现了一个脚本,它将最新的文件从一个目录复制到另一个目录,并将其重命名为一个静态名称,这将起作用

我期待着修改它,以适应文件,坐在文件夹中,每天创建

因此,文件夹结构是:

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
更新,所以我尝试了这个,但它仍在复制“测试用例”文件夹中的最新文件:

在意识到变量和代码体中都指定了%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
代码的最新版本:

@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

Edit在我的本地ramdisk上做了一个测试-现在应该可以工作了。

我希望这可以工作,但它似乎没有使用日期变量:
@echo off set source=“C:\test case\%todaysdate%\set target=“C:\Users\sam.green\Desktop\Random Folder\output.txt”set todaysdate=“%yyyyy%%mm%%dd%”FOR/F“delims=”%%I IN('DIR%source%\*.*/A:-D/O:-D/B')复制%source%\“%%I”%target%&echo%%I&GOTO:END:END超时4
不要将代码放在注释中-编辑您的问题。道歉,问题已编辑。如果您将命令按正确的顺序排列(先设置为今天),这可能会起作用。我从open cmd提示符运行此命令,现在可以读取以下错误:没有为GOTO命令指定批处理标签。这是我从您的代码中接管的错误,没有发现,答案已更改。有一次:端错误地交换到下一行。我希望调试规则现在对您有意义;-)谢谢你!将上一行的末尾移动到上一行的末尾仍然具有相同的输出,将其更改为EOF已消除错误,但“系统无法找到指定的文件。%I”问题仍然存在。我将使用最新版本更新此问题。我的apollogies、我的powershell命令缺少/未替换的引号。无需道歉:)这已经改变了情况,我现在得到以下信息:系统无法找到指定的路径。NTUSER.DAT,它现在是否正在其他文件夹中查找?