2016-06-21 50 views
0

我试图执行下面的脚本,该脚本将最新文件从一个文件夹复制到另一个文件夹。但是我在不同的场景下测试了下面的脚本,如果它存在于C:\ Source之外的子文件夹中,它甚至会复制CC * .txt文件。 但我想从下面的脚本中提到的源目录(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挑文件,请建议。

回答

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开关返回纯粹的文件名称,您需要再次将源位置包含在复制源中e脚本可以从任何工作目录中工作。

0

试试这个:

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

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"

双方应该做

相关问题