qys吧 关注:23贴子:1,711
  • 2回复贴,共1

【DOS】字符串的处理,set命令e.g. 用0替换时间中的空格

只看楼主收藏回复

set a=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%&echo %time%----%a: =0%


本楼含有高级字体1楼2015-03-29 10:28回复

    dos中,10点前的时间只有一位,就算在windows中手动修改为长时间模式,在任务栏倒是可以显示出2位小时(前方补0),但是dos中依然顽强的是一位显示小时
    C:\>echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
    20150329 73616
    C:\>echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
    20150329 73843
    C:\>手动在0到10点中小时数前用0补位
    ----------------------------------------------------------------
    可以利用dos中set命令,环境变量替换增强:%PATH:str1=str2%手动在0到10点中小时数前用0补位,
    ::1先把上一步的结果放在一个变量a
    set a=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
    ::2再用0替换空格(两个百分号是读取变量值,变量a的值是20150329 73843,后面跟冒号,再跟需要替换的字符空格 ,再跟等号=,最后写上替换的字符0,当然别忘了变量的处理是在两个百分号中间。
    echo %a: =0%
    结果就是20150329082035,小时位不再有空格。


    本楼含有高级字体2楼2015-03-29 11:40
    回复
      set qys=1234567890asdfghjkl
      echo %qys%
      1234567890asdfghjkl
       

      截取前6个字符(去掉前0位字符,再截取6个字符):
      echo %qys:~0,6%
      123456
       
      截取最后6个字符:
      echo %qys:~-6%
      fghjkl
      截取第一个到倒数第7个字符(去掉后6位字符):
      echo %qys:~0,-6%
      1234567890asd
      第4个字符开始,截取6个字符(去掉前3位字符,再截取6个字符):
      echo %qys:~3,6%
      456789
      倒数第8个字符开始,截取6个字符(去掉后7位字符,再截取6个字符):
      echo %qys:~-7,6%
      dfghjk
       


      本楼含有高级字体3楼2015-03-29 11:46
      回复