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

回复 1# jave000
  1. @echo off &setlocal enabledelayedexpansion
  2. if not exist "新建备份" md "新建备份"
  3. for /f "delims=" %%F in ('dir /b/a-d *.jpg *.pdf') do (set "t=%%~tF"&if "%date%"=="!t:~,10!" copy /y "%%F" "新建备份\%%~nF_!t:~5,2!!t:~8,2!!t:~,4!%%~xF")
  4. endlocal&pause&exit
复制代码
1

评分人数

TOP

本帖最后由 aloha20200628 于 2024-7-5 15:15 编辑

回复 12# jave000

系统默认%%~tF是取自文件修改时间戳,for循环还可简化一步...用以下代码模拟楼主一楼示例条件已测试通过
在本批所在目录中创建 “新建备份” 子目录,并获取全部目标文件*.jpg *.pdf,检查每个文件的修改时间戳是否与当日相同,是则复制到  “新建备份”  子目录中...
  1. @echo off &setlocal enabledelayedexpansion
  2. if not exist "新建备份" md "新建备份"
  3. for %%F in (*.jpg *.pdf) do (set "t=%%~tF"&if "%date:~,10%"=="!t:~,10!" copy /y "%%F" "新建备份\%%~nF_!t:~5,2!!t:~8,2!!t:~,4!%%~xF")
  4. endlocal&pause&exit/b
复制代码
1

评分人数

TOP

回复 14# 77七

win8.1简中系统》改变chcp 936或chcp 65001对%date%返回值没有影响

TOP

本帖最后由 aloha20200628 于 2024-7-5 15:05 编辑

回复 16# 77七

楼主要的是文件修改时间与当日比对,而%%~tF正好取自文件修改时间戳

TOP

本帖最后由 aloha20200628 于 2024-7-5 15:11 编辑

回复 18# 77七

win8.1》
  %date%=2024-07-05
  %%~tF=2024-07-05 15:08 取其前10位正好

TOP

回复 20# jave000

已订正了13楼代码,兼容win8.1-win10默认的简中码页(936),楼主的系统若是win10简中系统默认的936码页,再试一下13楼代码应该可以了
1

评分人数

TOP

本帖最后由 aloha20200628 于 2024-7-5 16:32 编辑

回复 18# 77七

win8.1 码页=936》
  %date% 短日期格式返回值 2024-07-05
  %%~tF 返回值 2024-07-05 15:08
win10 码页=936》
  %date% 长日期返回值 2024-07-05 周五
  %%~tF 返回值 2024-07-05 15:08
批处代码要兼容不同系统的日期长短格式返回值,%date%也要被切取前10位再用,13楼代码已据此订正了,以便兼容win8.1-10的936码页实况...

TOP

回复 23# 77七

回看了一下系统对日期的设置选项,有长和短不同日期格式的选取,其结果会影响批处%date%变量的返回值格式,而日期长格式中确有 ‘2014-07-05 周五’ 两个字段的选项...
所以,要看最终用户的具体选择结果了

TOP

返回列表