标题: [日期时间] 批处理在for下如何截取变量? [打印本页]
作者: 79794133 时间: 2021-9-3 14:48 标题: 批处理在for下如何截取变量?
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这个给截取下来,应该如何做?望大神指教
作者: Batcher 时间: 2021-9-3 15:29
回复 1# 79794133 - setlocal enabledelayedexpansion
- set "Folder1=E:\1"
- if not exist "%Folder1%" (
- echo 文件夹不存在
- pause
- goto :eof
- )
- for /r "%Folder1%" %%i in (*) do (
- set "riqi=%%~ti"
- echo !riqi!
- set "filedate=!riqi:~0,4!!riqi:~5,2!!riqi:~8,2!"
- echo !filedate!
- pause
- )
- pause
复制代码
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: 79794133 时间: 2021-9-3 15:52
如果截取出来了,运行之后第7行应该会显示数值set filedate=xxxxxxxx,而不是set filedate=!riqi:~0,4!!riqi:~5,2!!riqi:~8,2!
作者: 79794133 时间: 2021-9-3 15:54
回复 2# idwma
如果截取出来了,运行之后第7行应该会显示set filedate=xxxxxxxx,而现在显示的是set filedate=!riqi:~0,4!!riqi:~5,2!!riqi:~8,2!
你可以试一下
作者: Batcher 时间: 2021-9-3 16:14
回复 5# 79794133
set命令的回显跟你理解的可能不一样,echo变量的值是正常的就行了。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |