开发者

Is there a way to get date & time without separators for day month year etc, using a Windows command?

Is there a way to get time using a Windows command? If not, can the date and time commands output be modified?

For example date in Windows gives the date with / etc. I would like to get an output开发者_如何学JAVA that has no special characters such as / :


Use this command to show numbers of seconds after epoch.

(Cmd command)

powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalSeconds"


Through my own research online, I was not able to find a way to do this via a batch file directly. However, I was able to find this solution that worked for me:

In toEpoch.vbs:

WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())

Then called from my batch script like so:

for /f "delims=" %%x in ('cscript /nologo toEpoch.vbs') do set epoch=%%x

That set the %epoch% variable with the current unix timestamp and I was able to use it as I needed to.

Hope this helps.


from the command line try this

for /f "tokens=2,3,4 delims=/ " %f in ('date /t') do @echo %h%g%f

remember to double up the % chars if in batch file

@echo off
setlocal
for /f "tokens=2,3,4 delims=/ " %%f in ('date /t') do set d=%%h%%g%%f
for /f "tokens=1,2 delims=: " %%f in ('time /t') do set t=%%f%%g
echo datetime is : %d%%t: =0%
endlocal

I got this output:

c:\development>xx.bat
datetime is : 201008111108

[Edited per Kurt Pfeifle's comment about spaces in time expansion]


The CoreUtils for Windows project, http://gnuwin32.sourceforge.net/packages/coreutils.htm has a date command, which give you the same options as under Linux.

Download the software, and rename date.exe to gnudate.exe, to avoid a conflict with the Dos date command. You need the files libintl-2.dll and libiconv-2.dll to run the command.

For all available options type:

gnudate --help 

For example gnudate "+%a %e %b %Y %H:%M:%S" will give:

Sun 10 apr 2016 21:52:35

The command gnudate +%s will give the seconds since Epoch:

1460325461

The next Dos batch file shows the usage of gnudate. You will need to double the % in the gnudate +%s parameter.

rem set the variable s to the epoch seconds.
for /f "tokens=1 delims=" %%A in ('gnudate +%%s') do set s=%%A
rem use `%s%` for the time offset parameter of the ffmpeg drawtext filter.
ffmpeg -y -f lavfi -i testsrc=duration=15.3:size=cif:r=10 -vf "drawtext=fontfile=arial.ttf:text=%%{pts\\\:localtime\\\:%s%\\\:%%a %%d %%b %%Y %%H\\\\\\:%%M\\\\\\:%%S}:fontsize=10:x=w-text_w:y=h-lh:box=1" a.mp4

ffplay a.mp4

This batch file was tested with Windows 8 in a virtual machine under Linux.

To run it, you'll need to install ffmpeg.
You can download the Static build from https://ffmpeg.zeranoe.com/builds/.


There is no reliable way of getting a date in batch files without resorting to external tools or other languages such as VBScript.

From VBScript you can access the current date and time with the Date and Time functions. FormatDateTime will get you a culture-neutral date/time format which you can then parse.

You can get a result frmo the VBScript by using WScript.Echo from within the script and calling it like so from the batch:

for /f "delims=" %%x in ('cscript /nologo foo.vbs') do set result=%%x

Then the variable %result% contains whatever the VBScript had as output in its first line.


To get time in the "yyyymmdd" format, try this:

for /F "tokens=2-4 delims=/ " %i in ('date /t') do echo %k%i%j

More on:

http://www.sprint.net.au/~terbut/usefulbox/msdoscmds.htm

Also you can do it this way:

echo %date:~10,4%%date:~4,2%%date:~7,2%


'date' separator is locale specific.

Using Java set 'TS' environment variable as Unix timestamp:

for /f %i in ('jrunscript -e "java.lang.System.out.println(java.lang.Long.toString(java.time.Instant.now().toEpochMilli()))"') do @set TS=%i
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜