找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23221|回复: 4

[日期时间] 批处理在for下如何截取变量?

[复制链接]
发表于 2021-9-3 14:48:11 | 显示全部楼层 |阅读模式
Set Folder1=e:\1
setlocal enabledelayedexpansion
for /r "%Folder1%" %%i in (*) do (
set riqi=%%~ti 此处能获取各个文件的创建时间
!riqi! 此处不管是!riqi!还是%riqi%都无法显示
%date% 能显示正常当前系统时间
set filedate=!riqi:~0,4!!riqi:~5,2!!riqi:~8,2!   不管是!还是%都不会显示变量值
set file2date=%date:~0,4%%date:~5,2%%date:~8,2% 正常格式化日期
)
pause

说明:
set riqi=%%~ti 执行后显示为文件创建日期 如 set riqi=2021/09/04 13:04
我现在想把这个20210904这个给截取下来,应该如何做?望大神指教
发表于 2021-9-3 15:29:14 | 显示全部楼层
回复 1# 79794133
  1. setlocal enabledelayedexpansion
  2. set "Folder1=E:\1"
  3. if not exist "%Folder1%" (
  4.     echo 文件夹不存在
  5.     pause
  6.     goto :eof
  7. )
  8. for /r "%Folder1%" %%i in (*) do (
  9.     set "riqi=%%~ti"
  10.     echo !riqi!
  11.     set "filedate=!riqi:~0,4!!riqi:~5,2!!riqi:~8,2!"
  12.     echo !filedate!
  13.     pause
  14. )
  15. pause
复制代码
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ

请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
 楼主| 发表于 2021-9-3 15:52:47 | 显示全部楼层
如果截取出来了,运行之后第7行应该会显示数值set filedate=xxxxxxxx,而不是set filedate=!riqi:~0,4!!riqi:~5,2!!riqi:~8,2!
 楼主| 发表于 2021-9-3 15:54:34 | 显示全部楼层
回复 2# idwma


    如果截取出来了,运行之后第7行应该会显示set filedate=xxxxxxxx,而现在显示的是set filedate=!riqi:~0,4!!riqi:~5,2!!riqi:~8,2!


你可以试一下
发表于 2021-9-3 16:14:58 | 显示全部楼层
回复 5# 79794133


    set命令的回显跟你理解的可能不一样,echo变量的值是正常的就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 00:41 , Processed in 0.014916 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表