[英]How to get a UNIVERSAL Windows batch file timestamp
我在Windows批處理文件中生成時間戳時遇到問題,因為我在不同的Windows版本上獲得了不同的日期格式。
我的機器:
>echo %date%
>Tue 11/17/2009
朋友機:
>echo %date%
>11/17/2009
我想必須有一些方法可以使用for / f從兩個字符串中獲取日期(11/17/2009)。 我一直在嘗試和谷歌搜索,無法找到答案。
有沒有另一種方法來獲取時間戳而不使用%date%?
看看doff.exe 。 我使用它來獲取命名日志文件的時間戳。 從其網站:
DOFF打印格式化的日期和時間,帶有可選的日期偏移量(例如-1打印昨天的日期,+1打印明天的日期)。 要查看所有可用選項,請執行“doff -h”。 我通常使用此實用程序重命名日志文件,以便它們包含時間戳,(請參閱下面的第三個示例)。 這段代碼應該在Unix / Linux和DOS下編譯。
示例命令:
C:\>doff
19991108131135
如果沒有參數,則輸出為當前日期/時間,格式如下:yyyymmddhhmiss
C:\>doff mm/dd/yyyy
11/08/1999
在上面的例子中給出了日期格式規范。
@echo off
for /f "tokens=1-3 delims=/ " %%a in ('doff mm/dd/yyyy -1') do (
set mm=%%a
set dd=%%b
set yyyy=%%c)
rename httpd-access.log httpd-access-%yyyy%%mm%%dd%.log
上面的示例批處理文件顯示了根據昨天的日期重命名日志文件的簡潔方法。 “for”命令執行doff打印昨天的日期(“-1”參數指定昨天),然后將日期的每個組件提取到DOS批處理文件變量中。 “重命名”命令將“httpd-access.log”重命名為“httpd-access- [昨天的日期] .log”
另請參閱Windows Server 2003 Resource Kit工具中提供的Microsoft的now.exe。 我發現的一件壞事(艱難的方法)就是將ERRORLEVEL設置為打印的字符數。
看起來像這樣:
c:\>now
Thu May 19 14:26:45 2011
救命:
NOW : Display Message with Current Date and Time
Usage : NOW [message to be printed with time-stamp]
NOW displays the current time, followed by its command-line arguments.
NOW is similar to the standard ECHO command, but with a time-stamp.
如果要獲得獨立的日期時間設置,請使用VBScript :
thedate = Now
yr = Year(thedate)
mth = Month(thedate)
dy = Day(thedate)
hr = Hour(thedate)
min = Minute(thedate)
sec = Second(thedate)
WScript.Echo yr&mth&dy&hr&min&sec
不幸的是,它不能直接完成,所以你需要求助於像GetDate.cmd這樣的黑客攻擊。
有許多VBScript和小型外部命令行工具也可用,除非你已經在整個系統中使用了那種性質,否則我不會依賴它。
就個人而言,我試圖通過使用PowerShell來繞過它,它完全避開了這個問題。
正如我在此處發布的那樣: 批處理:UNIX時間戳
返回UNIX時間戳的簡單1行長C程序怎么樣? 您可以在批處理腳本中從%errorlevel%中檢索值。
#include <stdio.h>
#include <time.h>
int main(void)
{
return (int) time(NULL);
}
在我的測試命令提示符下,它工作:
C:\Users\dabaran\Desktop\cs50\src\C>.\time || echo %errorlevel% && set mytstamp=%errorlevel%
1419609373
C:\Users\dabaran\Desktop\cs50\src\C>echo %mytstamp%
1419609373
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.