How do I get current date/time on the Windows command line in a suitable format for usage in a file/folder name?

前端 未结 28 2154
别跟我提以往
别跟我提以往 2020-11-21 05:28

Update: Now that it\'s 2016 I\'d use PowerShell for this unless there\'s a really compelling backwards-compatible reason for it, particularly because of the regional setting

28条回答
  •  南方客
    南方客 (楼主)
    2020-11-21 06:01

    A function that is based on wmic:

    :Now  -- Gets the current date and time into separate variables
    ::    %~1: [out] Year
    ::    %~2: [out] Month
    ::    %~3: [out] Day
    ::    %~4: [out] Hour
    ::    %~5: [out] Minute
    ::    %~6: [out] Second
      setlocal
      for /f %%t in ('wmic os get LocalDateTime ^| findstr /b [0-9]') do set T=%%t
      endlocal & (
        if "%~1" neq "" set %~1=%T:~0,4%
        if "%~2" neq "" set %~2=%T:~4,2%
        if "%~3" neq "" set %~3=%T:~6,2%
        if "%~4" neq "" set %~4=%T:~8,2%
        if "%~5" neq "" set %~5=%T:~10,2%
        if "%~6" neq "" set %~6=%T:~12,2%
      )
    goto:eof
    

    Upside: Region independent. Downside: Only system administrators can run wmic.exe.

    Usage:

    call:Now Y M D H N S
    echo %Y%-%M%-%D% %H%:%N%:%S%
    

    This echos a string like this:

    2014-01-22 12:51:53
    

    Note that function parameters are out-Parameters - that is, you must supply variable names instead of values.

    All parameters are optional, so call:Now Y M is a valid call if you only want to get year and month.

提交回复
热议问题