返回列表 发帖
回复 1# gxx2002
假设file.txt为列出需复制的文件列表的文本文档,那么里面的内容格式是怎样的?

TOP

本帖最后由 pcl_test 于 2015-2-28 14:02 编辑

回复 9# gxx2002
限定只在某个修改日期段范围内的文件搜索?提供以下三种种方式,请选择
1、筛选出修改日期为N天前至当前日期以内的文件
2、筛选出修改日期为N天前的文件
3、输入修改日期1和修改日期2,筛选出修改日期1和修改日期2之间的文件

TOP

回复 11# gxx2002
批处理跟file.txt放在一起运行
@echo off
setlocal enabledelayedexpansion
::设定要搜索的目录
set "fdir1=D:\test\"
::设定目标文件夹
set "fdir2=D:\new\"
::设定修改日期1(yyyymmdd)
set date1=20150102
::设定修改日期2(yyyymmdd)
set date2=20150225
::日期1要早于日期2
if %date1% geq %date2% echo 日期1要早于日期2,请重新设定 & pause & exit
for /f "delims=" %%a in ('type "file.txt"') do (
if not exist "%fdir2%%%a\" md "%fdir2%%%a\"
for /f "delims=" %%b in ('dir /a-d /s /b "%fdir1%" ^|findstr /c:"%%a"') do (
for /f "tokens=1*" %%c in ('dir /tw "%%b" ^|findstr ":"') do (
set "wdate=%%c"
set "wdate=!wdate:~0,4!!wdate:~5,2!!wdate:~8,2!"
if !wdate! geq %date1% if !wdate! leq %date2% (
echo "%%b"
copy "%%b" "%fdir2%%%a\" /y)
)
)
)
pauseCOPY

TOP

回复 17# gxx2002

把14行、21行代码中的"%fdir2%%%a\"改为"%fdir2%"

TOP

回复 19# gxx2002

用你给的例子直接运行代码没有问题呀,只是需要file.txt文件中规定的几个文件?不是说file.txt列出的只是文件的部分名字吗?所以只要名字包含有file.txt列出的的都会复制过去,而且修改时间要设定好

TOP

回复 21# gxx2002
是不是你的一些子文件夹名也包含有file.txt列出的某些字符串?

TOP

本帖最后由 pcl_test 于 2015-2-28 18:34 编辑

回复 19# gxx2002
过滤了子文件夹名也包含有file.txt列出的某些字符串导致不符合要求的文件也被复制的问题
@echo off
setlocal enabledelayedexpansion
::设定要搜索的目录
set "fdir1=原文件夹\"
::设定目标文件夹
set "fdir2=目标文件夹\"
::设定修改日期1(yyyymmdd)
set date1=20150101
::设定修改日期2(yyyymmdd)
set date2=20150228
::日期1要早于日期2
if %date1% geq %date2% echo 日期1要早于日期2,请重新设定 & pause & exit
if not exist "%fdir2%" md "%fdir2%"
for /f "delims=" %%a in ('dir /a-d /s /b "%fdir1%"') do >>$1 echo,%%~nxa
for /f "delims=" %%b in ('type "文件名.txt"') do >>$2 findstr /c:"%%b" $1
for /f "delims=" %%c in ('type $2') do (
for /r "%fdir1%" %%e in (.) do (
set "tdir=%%e"
if exist "!tdir:~0,-1!%%c" >>$3 echo,!tdir:~0,-1!%%c
)
)
for /f "delims=" %%i in ('type $3') do (
set "wdate=%%~ti"
set "wdate=!wdate:~0,4!!wdate:~5,2!!wdate:~8,2!"
if !wdate! geq %date1% if !wdate! leq %date2% (
echo "%%i" 最后修改日期为!wdate!
copy "%%i" "%fdir2%" /y
)
)
del $* /f /q
pauseCOPY
1

评分人数

TOP

回复 19# gxx2002

问题得到解决请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html

TOP

返回列表