批处理文件将文件从特定文件夹而不是子文件夹复制到目标文件夹

时间:2016-06-21 18:20:15

标签: batch-file cmd

我尝试执行以下脚本,该脚本将最新文件从一个文件夹复制到另一个文件夹。但是我在不同的场景中测试了下面的脚本,它甚至复制了文件CC * .txt,如果它存在于除C:\ Source之外的子文件夹中。 但是我想从仅下面脚本中提到的源目录(C:\ Source)复制最新文件,但是如果任何文件夹/子文件夹中存在相同的新文件,则不应该考虑,请提出建议

FOR /F %%I IN ('DIR "C:\Source\cc*.txt" /B /A:-D /T:W /O:D /S') DO SET "LATEST=%%~I"
COPY "%LATEST%" "C:\Destination"

PS:主要是因为/S,但我不确定只需从指定的目录C:\Source中选择文件需要使用哪个选项,请提出建议。

3 个答案:

答案 0 :(得分:0)

试试这个:

for /f "tokens=*" %%A in ('dir /b /s /O:D "C:\Source\cc*.txt"') do set "latest=%%A" copy "%latest%" "C:\Destination"

答案 1 :(得分:0)

FOR /F %%I IN ('DIR cc*.txt /B /O:-D') DO COPY %%I "C:\Destination" & EXIT
超级容易。


FOR /F "delims=|" %%I IN ('DIR "cc*.txt" /B /O:D') DO COPY %%I "C:\Destination"

两者都应该

答案 2 :(得分:0)

只需删除/S选项(告诉dir也处理子目录):

FOR /F %%I IN ('DIR "C:\Source\cc*.txt" /B /A:-D /T:W /O:D') DO SET "LATEST=%%~I"
COPY "C:\Source\%LATEST%" "C:\Destination"

由于没有dir /B开关的/S仅返回纯文件名,因此您需要再次在复制源中包含源位置,以使脚本可以在任何工作目录中工作。