标题: [已解决]批处理调用gawk格式化输出日期时间出现缺少前导/前缀0是什么原因 [打印本页]
作者: shootman2 时间: 2015-6-1 20:24 标题: [已解决]批处理调用gawk格式化输出日期时间出现缺少前导/前缀0是什么原因
本帖最后由 pcl_test 于 2016-6-15 01:34 编辑
当开启变量延迟后,执行如下语句结果中日期少了一个0,请大神帮助啊!!!
for /f "tokens=*" %%x in ('gawk "BEGIN{tstamp=mktime(\"2015 06 01 18 30 30\");print strftime(\"%%Y/%%m/%%d %%A %%H:%%M:%%S\",tstamp);}"') do echo %%x
2015/06/1 星期一 18:30:30
怎样才能得到如下结果
2015/06/01 星期一 18:30:30
作者: gawk 时间: 2015-6-1 22:18
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=*" %%x in ('gawk "BEGIN{tstamp=mktime(\"2015 06 01 18 30 30\");print strftime(\"%%Y/%%m/%%d %%A %%H:%%M:%%S\",tstamp);}"') do (
- set n=%%x
- echo !n!
- )
- pause
复制代码
我这里测试没有问题
作者: shootman2 时间: 2015-6-1 23:01
我这里测试没有问题
gawk 发表于 2015-6-1 22:18
分析了半天,发现时这样的,我有个参数%%d,具体见如下代码
@echo off
setlocal enabledelayedexpansion
for /f "usebackq eol=# tokens=1-7 delims=|" %%a in ("%alt_list_file%") do (
echo %%a--%%b--%%c--%%d & rem 这个地方的%%d的值是从文件中读出来的,值为1
set almGenDate=2015 06 01 22 31 30
for /f "tokens=*" %%x in ('gawk "BEGIN{tstamp=mktime(\"!almGenDate!\");print strftime(\"%%Y/%%m/%%d %%A %%H:%%M:%%S\",tstamp);}"') do set almSignDate=%%x & rem 这个地方的%%d 本是个参数,将前面的%%d的值直接打印出来了
echo !almSignDate!
)
pause
请大神,帮忙解决一下。。。
作者: terse 时间: 2015-6-1 23:15
- ...\"%%Y/%%2m/%%2d %%2A %%2H:%%2M:%%2S\"...
复制代码
作者: shootman2 时间: 2015-6-1 23:57
terse 发表于 2015-6-1 23:15
问题解决了!非常感谢!!!
但是有些不好理解,再追问大神一下,%%2d是什么意思呢? 是第2个%%d呢?还是长度是2呢?
作者: terse 时间: 2015-6-2 00:01
这个是长度为2
作者: shootman2 时间: 2015-6-2 00:14
这个是长度为2
terse 发表于 2015-6-2 00:01
那可以这样写吗?
"%%4Y/%%2m/%%2d %%2A %%2H:%%2M:%%2S"
作者: terse 时间: 2015-6-2 01:02
回复 7# shootman2
可以
作者: gawk 时间: 2015-6-2 03:39
回复 3# shootman2
建议把 for 循环的参数改成其它字母,以免混淆。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |