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

[已解决]批处理调用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
1

评分人数

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. 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 (
  4.     set n=%%x
  5.     echo !n!
  6. )
  7. pause
复制代码
我这里测试没有问题
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

我这里测试没有问题
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

请大神,帮忙解决一下。。。

TOP

  1. ...\"%%Y/%%2m/%%2d %%2A %%2H:%%2M:%%2S\"...
复制代码

TOP

terse 发表于 2015-6-1 23:15



    问题解决了!非常感谢!!!

但是有些不好理解,再追问大神一下,%%2d是什么意思呢? 是第2个%%d呢?还是长度是2呢?

TOP

这个是长度为2

TOP

这个是长度为2
terse 发表于 2015-6-2 00:01



    那可以这样写吗?
    "%%4Y/%%2m/%%2d %%2A %%2H:%%2M:%%2S"

TOP

回复 7# shootman2

可以

TOP

回复 3# shootman2


    建议把 for 循环的参数改成其它字母,以免混淆。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

返回列表