[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 idwma 于 2021-7-11 19:48 编辑

@echo off&setlocal enabledelayedexpansion
set/p XXX=输入XXX具体名称
set/a tn=10000!time:~0,2!*60+10000!time:~3,2!
set/p t=填写分钟数:
set/a t=!tn!-!t!
set "p1=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "p2=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "d=!USERPROFILE!\Desktop\SPR\!XXX!"
for %%a in (%p1% %p2%) do (
        for /f "tokens=1,2,4* delims= " %%i in ('dir/a-d "%%a" ^|findstr "^[0-9]"') do (
                set tf=%%j
                set/a tf=10000!tf:~0,2!*60+10000!tf:~3,2!
                if "!date:~0,10!" == "%%i" if "!tf!" gtr "!t!" echo copy "%%a\%%k" "!d!" /y &rem 测试看完输出把前面的echo删了
        )
)
pause
1

评分人数

TOP

回复 4# jave000


    是修改了之后运行的吗
1

评分人数

TOP

本帖最后由 idwma 于 2021-7-12 18:14 编辑

回复 8# jave000

%time%变量,小时数是个位时不显示0,换个方法获得当前时间
@echo off&setlocal enabledelayedexpansion
set/p XXX=输入XXX具体名称
set/p t=填写分钟数:
for /f "tokens=1,2 delims=: " %%i in ('time/t') do set/a tn=10000%%i*60+10000%%j
set/a t=!tn!-!t!
set "p1=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "p2=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "d=!USERPROFILE!\Desktop\SPR\!XXX!"
for %%a in (%p1% %p2%) do (
        for /f "tokens=1,2,4* delims= " %%i in ('dir/a-d "%%a" ^|findstr "^[0-9]"') do (
                set tf=%%j
                set/a tf=10000!tf:~0,2!*60+10000!tf:~3,2!
                if "!date:~0,10!" == "%%i" if "!tf!" gtr "!t!" echo copy "%%a\%%k" "!d!" /y &rem 测试看完输出把前面的echo删了
        )
)
pause
1

评分人数

TOP

回复 10# jave000

手动执行dir \\btssvr9\pds1\!XXX!\3d\eqp_dgn看有结果出来吗

TOP

回复 12# jave000


    那在提示填写分钟数的时候输个大点的数比如1440看有反应吗

TOP

回复 14# jave000


    难道英文系统的时间格式显示和中文不一样?,可以发一部分dir/a-d \\btssvr9\pds1\!XXX!\3d\eqp_dgn的结果出来看一下吗

TOP

回复 16# jave000


    虽然有5列多了一列,时间的位置一样的没有输出内容奇怪,确定这里面有今天的新文件吗

@echo off&setlocal enabledelayedexpansion
set/p XXX=输入XXX具体名称
set/p t=填写分钟数:
for /f "tokens=1,2 delims=: " %%i in ('time/t') do set/a tn=10000%%i*60+10000%%j
set/a tn=!tn!-!t!
set "p1=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "p2=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "d=!USERPROFILE!\Desktop\SPR\!XXX!"
for %%a in (%p1% %p2%) do (
        for /f "tokens=2,5* delims= " %%i in ('dir/a-d "%%a" ^|find "!date:~0,10!"') do (
                if "%%i" == "" (echo !date!没有今天的文件) else (echo 发现一个今天的文件%%j)
                set tf=%%i
                set/a tf=10000!tf:~0,2!*60+10000!tf:~3,2!
                if "!tf!" gtr "!tn!" (echo copy "%%a\%%j" "!d!" /y) else (echo 没有!t!分钟内的文件)
        )
)
pause
1

评分人数

TOP

回复 18# jave000


    默认的是用的修改时间,还是没反应尴尬了这就不知道了

TOP

回复 22# jave000


    日期和文件名位置不一样,系统时间12小时制和24小时又不一样,试一下这次的
@echo off&setlocal enabledelayedexpansion
set/p XXX=input
set/p t=min
set tn=!time: =0!
set/a tn=10000!tn:~0,2!*60+10000!tn:~3,2!
set/a t=!tn!-!t!
set "p1=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "p2=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "d=!USERPROFILE!\Desktop\SPR\!XXX!\"
echo !date!|findstr /i "[a-z]">nul && set dt=!date:~4,10! || set dt=!date:~0,10!
for %%a in (%p1% %p2%) do (
for /r "%%a" %%b in (*.*) do (
echo %%~tb | find "PM">nul && (set tf=%%~tb & set/a tf=(10000!tf:~11,2!+12)*60+10000!tf:~14,2!) || (set tf=%%~tb & set/a tf=10000!tf:~11,2!*60+10000!tf:~14,2!)
set df=%%~tb
if "!dt!" == "!df:~0,10!" if "!tf!" gtr "!t!" echo copy "%%b" "!d!" /y
)
)

TOP

又踩了两个雷,for /r 的路径不能用上个循环的变量,括号里的括号要转义
@echo off&setlocal enabledelayedexpansion
set/p XXX=input
set/p t=min
set tn=!time: =0!
set/a tn=10000!tn:~0,2!*60+10000!tn:~3,2!
set/a t=!tn!-!t!
set "p1=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "p2=\\btssvr9\pds1\!XXX!\3d\eqp_dgn"
set "d=!USERPROFILE!\Desktop\SPR\!XXX!\"
echo !date!|findstr /i "[a-z]">nul && set dt=!date:~4,10! || set dt=!date:~0,10!
for %%a in ("%p1%" "%p2%") do (
pushd "%%a"
for /r  %%b in (*.*) do (
echo %%~tb | find "PM">nul && (set tf=%%~tb & set/a tf=^(10000!tf:~11,2!+12^)*60+10000!tf:~14,2!) || (set tf=%%~tb & set/a tf=10000!tf:~11,2!*60+10000!tf:~14,2!)
set df=%%~tb
if "!dt!" == "!df:~0,10!" if "!tf!" gtr "!t!" echo copy "%%b" "!d!" /y
)
popd
)

TOP

返回列表