【问题标题】:Adding to %TIME% variable in windows cmd script在 Windows cmd 脚本中添加到 %TIME% 变量
【发布时间】:2018-06-14 03:25:08
【问题描述】:

我意识到这可能在任何数量的其他脚本语言中都可以更轻松地完成,但开始在 cmd 中快速完成,现在我很好奇。

希望在与另一个进程启动的时间偏移的位置启动一个进程。让我们说 5 分钟以保持简单。有没有办法添加到 %TIME% 变量中?

例如:

start /b foo.exe
at %TIME% + 5 minutes bar.exe

感谢您的帮助

【问题讨论】:

    标签: windows scripting cmd


    【解决方案1】:

    我刚刚输入了set/?,发现 cmd 比老蝙蝠好得多...:-)

    set h=%TIME:~0,2%
    set m=%TIME:~3,2%
    set/a m2="m+5"
    set t2=%h%:%m2%
    set t2
    

    显然,你可以得到 62 分钟,等等,我让你做额外的数学...... :-D

    【讨论】:

      【解决方案2】:

      这是额外的数学:

      :: Get an offset of 1 minute from the current time, accounting for edge cases
      set hr=%TIME:~0,2%
      set /a mn=%TIME:~3,2%+1
      :: check minutes; greater than 60? add n/60 to hour, n%60 to mins
      if %mn% geq 60 set /a hr=hr+mn/60 && set /a mn=mn%%60
      if %hr% geq 24 set /a h=0
      :: pad zeros if necessary
      if %mn% leq 9 set mn=0%mn%
      if %hr% leq 9 set hr=0%hr%
      

      【讨论】:

      • 如果 %hr% leq 9 设置 hr=0%hr:~1,1%
      【解决方案3】:

      2 菲洛

      谢谢

      我的洗澡密码:

      set h=%TIME:~0,2%
      set m=%TIME:~3,2%
      set s=%TIME:~6,2%
      set time=%h%_%m%_%s%
      mkdir c:\test\%time%
      move c:\test\*.* c:\test\%time%
      "C:\Program Files\WinRAR\RAR" a -ep c:\test\%time%\ -agDD-MM-YY_hh-mm-ss c:\test\%time%\*.* -zc:\arhiv\HEADERS.TXT
      move c:\test\%time%\*.rar c:\arhiv\
      rmdir c:\test\%time% /S /Q
      

      【讨论】:

        【解决方案4】:
                @echo off
                :: START USAGE  ==================================================================
                ::SET THE NICETIME 
                :: SET NICETIME=BOO
                :: CALL GetNiceTime.cmd 
        
                :: ECHO NICETIME IS %NICETIME%
        
                :: echo nice time is %NICETIME%
                :: END USAGE  ==================================================================
        
                echo set hhmmsss
                :: this is Regional settings dependant so tweak this according your current settings
                for /f "tokens=1-3 delims=:" %%a in ('echo %time%') do set hhmmsss=%%a%%b%%c 
                ::DEBUG ECHO hhmmsss IS %hhmmsss%
                ::DEBUG PAUSE
                echo %yyyymmdd%
                    :: this is Regional settings dependant so tweak this according your current settings
                for /f "tokens=1-3 delims=." %%D in ('echo %DATE%') do set  yyyymmdd=%%F%%E%%D
                ::DEBUG ECHO yyyymmdd IS %yyyymmdd%
                ::DEBUG PAUSE
        
        
                set NICETIME=%yyyymmdd%_%hhmmsss%
                ::DEBUG echo THE NICETIME IS %NICETIME%
        
                ::DEBUG PAUSE
        

        【讨论】:

          【解决方案5】:

          复制.cmd:

          set hr=%TIME:~0,2%
          if %hr% leq 9 set hr=0%hr:~1,1%
          set mydate=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%-%hr%%TIME:~3,2%%TIME:~6,2%
          copy file.txt file-%mydate%.txt
          pause
          

          【讨论】:

            【解决方案6】:

            稍微扩展了“洗澡代码”:

            echo ----- time -----
            echo %time%
            set _hh=%time:~0,2%
            set _mm=%time:~3,2%
            set _ss=%time:~6,2%
            set __time=%_hh%%_mm%%_ss%
            echo _%__time%_
            echo ----- time -----
            echo:
            echo ----- date -----
            echo %date%
            set _Y=%date:~0,4%
            set _M=%date:~5,2%
            set _D=%date:~8,2%
            set __date=%_Y%%_M%%_D%
            echo _%__date%_
            echo ----- date -----
            pause
            

            输出 205146 %__time%

            %__date% 的输出 20180613

            【讨论】:

            • 这对于其他日期本地化(例如欧洲 13/12/1234 格式)失败
            猜你喜欢
            • 1970-01-01
            • 2023-03-29
            • 2011-10-17
            • 1970-01-01
            • 1970-01-01
            • 2012-04-28
            • 2015-07-24
            • 2013-02-04
            • 1970-01-01
            相关资源
            最近更新 更多