[批处理help] 如何将指定目录下的7天内生成的所有文件夹和文件copy到指定目录

时间:2021-09-18 21:50:15
如何将指定目录下的7天内生成的所有文件夹和文件copy到指定目录.

1.只copy7天内生成的文件或文件夹.
2.如果目标已存在,则不覆盖,也不要提示.

谢谢

43 个解决方案

#1


自己写一个COPY的程序筛选。

#2


需要用dos批处理实现

#3



XCOPY 命令,
详细看HELP。
如: xcopy c:\text\*.* d:\test  /S/D:M-D-Y /C 

#4


用xcopy试过,但如果/d 参数后面指定日期,则如果目标存,会自动覆盖,这是不想要的.

然后常试用forfiles
[code=BatchFile]@echo off 
echo wscript.echo dateadd("d",-7,date) >%tmp%\tmp.vbs 
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do ( 
set "y=%%i" 
set "m=%%j" 
set "d=%%k" 

set "nowdate=%y%-%m%-%d%" 
echo %nowdate% 

forfiles /p d:\test /s /m *.txt /d +%nowdate% /c "cmd /c copy @path e:\test\"
pause 
[/code]
这里可以把 d:\test\a\a.txt copy 到 e:\test\a.txt ,现在不知道如何处理才能copy到e:\test\a下?

#5


试试这样

forfiles /p d:\test /s /m *.txt /d +%nowdate% /c "cmd /c Xcopy @path e:\test\"
 

#6


引用 5 楼 zaorv 的回复:
试试这样

forfiles /p d:\test /s /m *.txt /d +%nowdate% /c "cmd /c Xcopy @path e:\test\"


这样不会自动创建txt所属文件夹.

#7


rem @echo off 
@echo on
echo wscript.echo dateadd("d",-7,date) >%tmp%\tmp.vbs 
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do ( 
set "y=%%i" 
set "m=%%j" 
set "d=%%k" 

set "nowdate=%m%-%d%-%y%" 
echo %nowdate% 

xcopy d:\test\*.txt  C:\TEST /S/D:%nowdate% /C/i

pause

#8


引用 7 楼 zaorv 的回复:
rem @echo off
@echo on
echo wscript.echo dateadd("d",-7,date) >%tmp%\tmp.vbs
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do (
set "y=%%i"
set "m=%%j"
set "d=%%k"
)
set "nowdate=%m%-%d%-%y%"
echo %nowdate%

xcopy d:\test\*.txt  C:\TEST /S/D:%nowdate% /C/i

pause


用xcopy试过,但如果/d 参数后面指定日期,则如果目标存,会自动覆盖,这是不想要的. 

zaorv试试是不是这样?

#9


用批处理文件来copy。

#10


写个应用程序吧。

#11


xcopy只提供了一个/Y,如果再有一个/跳过,就可以了. 可惜没有

#12


10L真言,哈

#13


自己搞定了,换了个思路:
先将不在7天之内的写入一个文件列表,然后利用xcopy的/EXCLUDE参数不copy列表内的文件.

[code=BatchFile]@echo on
rem 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内的
rem author:perfectaction

set "src=d:\test\" rem 源目录路径
set "des=e:\test\" rem 目标路径
set "suffix=txt"   rem 需要xcopy的文件后缀
set "dd=7"    rem 只copy7天之内的文件

if exist %src%notcopylist.log del %src%notcopylist.log
forfiles /p %src% /s /m *.* /d -%dd% /c "cmd /c dir @path /b/s >>%src%notcopylist.log"
xcopy %src%*.%suffix% %des% /s /d /EXCLUDE:%src%notcopylist.log

rem pause[/code]

#14



[code=BatchFile]@echo on
rem 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内创建的或是7天内修改过的
rem author:perfectaction

set "src=d:\test\" rem 源目录路径
set "des=e:\test\" rem 目标路径
set "suffix=txt"   rem 需要xcopy的文件后缀
set "dd=7"         rem 只copy7天之内的文件

if exist %src%notcopylist.log del %src%notcopylist.log
forfiles /p %src% /s /m *.* /d -%dd% /c "cmd /c dir @path /b/s >>%src%notcopylist.log"
xcopy %src%*.%suffix% %des% /s /d /y /EXCLUDE:%src%notcopylist.log

rem pause
[/code]

#15


再次完善一个小地方:
[code=BatchFile]@echo on
rem 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内创建的或是7天内修改过的
rem author:perfectaction

set "src=d:\test\" rem 源目录路径
set "des=e:\test\" rem 目标路径
set "suffix=txt"   rem 需要xcopy的文件后缀
set "dd=7"         rem 只copy7天之内的文件

if exist %src%notcopylist_%suffix%.log del %src%notcopylist_%suffix%.log
forfiles /p %src% /s /m *.* /d -%dd% /c "cmd /c dir @path /b/s >>%src%notcopylist_%suffix%.log"
if exist %src%notcopylist_%suffix%.log xcopy %src%*.%suffix% %des% /s /d /y /EXCLUDE:%src%notcopylist_%suffix%.log
if not exist %src%notcopylist_%suffix%.log xcopy %src%*.%suffix% %des% /s /d /y

rem pause
[/code]

#16


关注!!

#17


友情帮顶

#18


tve bv ajgakgflagkhl;

#19


[code=BatchFile]@echo off
rem 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内创建的或是7天内修改过的
rem author:perfectaction

set "src=c:\test\" rem 源目录路径
set "des=d:\test\" rem 目标路径
set "suffix=txt"   rem 需要xcopy的文件后缀
set "dd=7"         rem 只copy7天之内的文件

del /f /q /a "%src%notcopylist_%suffix%.log" 2>nul
forfiles /p %src% /s /m *.* /d -%dd% /c "cmd /c dir @path /b /s >>%src%notcopylist_%suffix%.log"
if not exist "%src%notcopylist_%suffix%.log\" (
  if exist "%src%notcopylist_%suffix%.log" (
    xcopy "%src%*.%suffix%" "%des%" /s /d /y /EXCLUDE:%src%notcopylist_%suffix%.log
  ) else (
    xcopy "%src%*.%suffix%" "%des%" /s /d /y
  )
) else (
  echo 错误:无法创建%src%notcopylist_%suffix%.log文件,当前目录存在同名文件夹。
)
rem pause[/code]

#20


又见007,学习. [批处理help] 如何将指定目录下的7天内生成的所有文件夹和文件copy到指定目录

#21


forfiles命令的/d开关只能检测文件的最后修改日期。
如果要检测文件的创建日期,可以在dir /tc的结果中提取。

#22


引用 21 楼 ljc007 的回复:
forfiles命令的/d开关只能检测文件的最后修改日期。
如果要检测文件的创建日期,可以在dir /tc的结果中提取。


嗯,最近在学习批处理,以后还要向007多多学习.

#23


 回帖是一种美德!每天回帖即可获得 10 分可用分!

#24


引用 20 楼 perfectaction 的回复:
又见007,学习.
ddddd

#25


dddddddddddddddd

#26


d

#27


windows 没有写过 

#28


楼主牛
UP

#29


记号,学习了

#30


huifu

#31


o 这个 是什么呢

#32


怎么 才能得几分啊

#33


学习了

#34


学习

#35


回帖是个没得。。。。

#36


xuexi

#37


这个我也来哦解一下

#38


学习了...

#39


都是高手,初来乍到,学习学习。

#40


向技术帝学习了

#41


gaogao

#42


学习一下

#43


见习中

#1


自己写一个COPY的程序筛选。

#2


需要用dos批处理实现

#3



XCOPY 命令,
详细看HELP。
如: xcopy c:\text\*.* d:\test  /S/D:M-D-Y /C 

#4


用xcopy试过,但如果/d 参数后面指定日期,则如果目标存,会自动覆盖,这是不想要的.

然后常试用forfiles
[code=BatchFile]@echo off 
echo wscript.echo dateadd("d",-7,date) >%tmp%\tmp.vbs 
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do ( 
set "y=%%i" 
set "m=%%j" 
set "d=%%k" 

set "nowdate=%y%-%m%-%d%" 
echo %nowdate% 

forfiles /p d:\test /s /m *.txt /d +%nowdate% /c "cmd /c copy @path e:\test\"
pause 
[/code]
这里可以把 d:\test\a\a.txt copy 到 e:\test\a.txt ,现在不知道如何处理才能copy到e:\test\a下?

#5


试试这样

forfiles /p d:\test /s /m *.txt /d +%nowdate% /c "cmd /c Xcopy @path e:\test\"
 

#6


引用 5 楼 zaorv 的回复:
试试这样

forfiles /p d:\test /s /m *.txt /d +%nowdate% /c "cmd /c Xcopy @path e:\test\"


这样不会自动创建txt所属文件夹.

#7


rem @echo off 
@echo on
echo wscript.echo dateadd("d",-7,date) >%tmp%\tmp.vbs 
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do ( 
set "y=%%i" 
set "m=%%j" 
set "d=%%k" 

set "nowdate=%m%-%d%-%y%" 
echo %nowdate% 

xcopy d:\test\*.txt  C:\TEST /S/D:%nowdate% /C/i

pause

#8


引用 7 楼 zaorv 的回复:
rem @echo off
@echo on
echo wscript.echo dateadd("d",-7,date) >%tmp%\tmp.vbs
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo %tmp%\tmp.vbs') do (
set "y=%%i"
set "m=%%j"
set "d=%%k"
)
set "nowdate=%m%-%d%-%y%"
echo %nowdate%

xcopy d:\test\*.txt  C:\TEST /S/D:%nowdate% /C/i

pause


用xcopy试过,但如果/d 参数后面指定日期,则如果目标存,会自动覆盖,这是不想要的. 

zaorv试试是不是这样?

#9


用批处理文件来copy。

#10


写个应用程序吧。

#11


xcopy只提供了一个/Y,如果再有一个/跳过,就可以了. 可惜没有

#12


10L真言,哈

#13


自己搞定了,换了个思路:
先将不在7天之内的写入一个文件列表,然后利用xcopy的/EXCLUDE参数不copy列表内的文件.

[code=BatchFile]@echo on
rem 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内的
rem author:perfectaction

set "src=d:\test\" rem 源目录路径
set "des=e:\test\" rem 目标路径
set "suffix=txt"   rem 需要xcopy的文件后缀
set "dd=7"    rem 只copy7天之内的文件

if exist %src%notcopylist.log del %src%notcopylist.log
forfiles /p %src% /s /m *.* /d -%dd% /c "cmd /c dir @path /b/s >>%src%notcopylist.log"
xcopy %src%*.%suffix% %des% /s /d /EXCLUDE:%src%notcopylist.log

rem pause[/code]

#14



[code=BatchFile]@echo on
rem 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内创建的或是7天内修改过的
rem author:perfectaction

set "src=d:\test\" rem 源目录路径
set "des=e:\test\" rem 目标路径
set "suffix=txt"   rem 需要xcopy的文件后缀
set "dd=7"         rem 只copy7天之内的文件

if exist %src%notcopylist.log del %src%notcopylist.log
forfiles /p %src% /s /m *.* /d -%dd% /c "cmd /c dir @path /b/s >>%src%notcopylist.log"
xcopy %src%*.%suffix% %des% /s /d /y /EXCLUDE:%src%notcopylist.log

rem pause
[/code]

#15


再次完善一个小地方:
[code=BatchFile]@echo on
rem 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内创建的或是7天内修改过的
rem author:perfectaction

set "src=d:\test\" rem 源目录路径
set "des=e:\test\" rem 目标路径
set "suffix=txt"   rem 需要xcopy的文件后缀
set "dd=7"         rem 只copy7天之内的文件

if exist %src%notcopylist_%suffix%.log del %src%notcopylist_%suffix%.log
forfiles /p %src% /s /m *.* /d -%dd% /c "cmd /c dir @path /b/s >>%src%notcopylist_%suffix%.log"
if exist %src%notcopylist_%suffix%.log xcopy %src%*.%suffix% %des% /s /d /y /EXCLUDE:%src%notcopylist_%suffix%.log
if not exist %src%notcopylist_%suffix%.log xcopy %src%*.%suffix% %des% /s /d /y

rem pause
[/code]

#16


关注!!

#17


友情帮顶

#18


tve bv ajgakgflagkhl;

#19


[code=BatchFile]@echo off
rem 将指定目录的所有文件及文件夹copy到指定目录下,只copy 7天内创建的或是7天内修改过的
rem author:perfectaction

set "src=c:\test\" rem 源目录路径
set "des=d:\test\" rem 目标路径
set "suffix=txt"   rem 需要xcopy的文件后缀
set "dd=7"         rem 只copy7天之内的文件

del /f /q /a "%src%notcopylist_%suffix%.log" 2>nul
forfiles /p %src% /s /m *.* /d -%dd% /c "cmd /c dir @path /b /s >>%src%notcopylist_%suffix%.log"
if not exist "%src%notcopylist_%suffix%.log\" (
  if exist "%src%notcopylist_%suffix%.log" (
    xcopy "%src%*.%suffix%" "%des%" /s /d /y /EXCLUDE:%src%notcopylist_%suffix%.log
  ) else (
    xcopy "%src%*.%suffix%" "%des%" /s /d /y
  )
) else (
  echo 错误:无法创建%src%notcopylist_%suffix%.log文件,当前目录存在同名文件夹。
)
rem pause[/code]

#20


又见007,学习. [批处理help] 如何将指定目录下的7天内生成的所有文件夹和文件copy到指定目录

#21


forfiles命令的/d开关只能检测文件的最后修改日期。
如果要检测文件的创建日期,可以在dir /tc的结果中提取。

#22


引用 21 楼 ljc007 的回复:
forfiles命令的/d开关只能检测文件的最后修改日期。
如果要检测文件的创建日期,可以在dir /tc的结果中提取。


嗯,最近在学习批处理,以后还要向007多多学习.

#23


 回帖是一种美德!每天回帖即可获得 10 分可用分!

#24


引用 20 楼 perfectaction 的回复:
又见007,学习.
ddddd

#25


dddddddddddddddd

#26


d

#27


windows 没有写过 

#28


楼主牛
UP

#29


记号,学习了

#30


huifu

#31


o 这个 是什么呢

#32


怎么 才能得几分啊

#33


学习了

#34


学习

#35


回帖是个没得。。。。

#36


xuexi

#37


这个我也来哦解一下

#38


学习了...

#39


都是高手,初来乍到,学习学习。

#40


向技术帝学习了

#41


gaogao

#42


学习一下

#43


见习中