更新:现在是2016年我将使用PowerShell,除非它有一个非常引人注目的向后兼容原因,特别是因为使用区域设置问题date.请参阅@ npocmaka的/sf/answers/1385946551/
什么是Windows命令行语句我可以使用以我可以放入文件名的格式获取当前日期时间?
我希望有一个.bat文件,它将目录压缩到一个存档中,并将当前日期和时间作为名称的一部分,例如,Code_2008-10-14_2257.zip.有没有简单的方法可以做到这一点,独立于机器的区域设置?
我真的不介意日期格式,理想情况下它是yyyy-mm-dd,但任何简单都可以.
到目前为止,我已经有了这个,在我的机器上给了我Tue_10_14_2008_230050_91:
rem Get the datetime in a format that can go in a filename.
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
rem Now use the timestamp by in a new ZIP file name.
"d:\Program Files\7-Zip\7z.exe" a -r Code_%_my_datetime%.zip Code
Run Code Online (Sandbox Code Playgroud)
我可以忍受这个,但它看起来有点笨重.理想情况下,它更简洁,并具有前面提到的格式.
我正在使用Windows Server 2003和Windows XP Professional.我不想安装额外的实用程序来实现这一点(虽然我发现有一些可以做很好的日期格式化).
我在Windows批处理文件中生成时间戳时遇到问题,因为我在不同的Windows版本上获得了不同的日期格式.
我的机器:
>echo %date%
>Tue 11/17/2009
Run Code Online (Sandbox Code Playgroud)
朋友机:
>echo %date%
>11/17/2009
Run Code Online (Sandbox Code Playgroud)
我想必须有一些方法可以使用for/f从两个字符串中获取日期(11/17/2009).我一直在尝试和谷歌搜索,无法找到答案.
有没有另一种方法来获取时间戳而不使用%date%?
我有一些cmd.exe的问题,我有时用它来创建文件并在那里写输出.但如果我试试这个:
wmic logicaldisk get name, freespace >> output.txt
echo %date% >> output.txt
Run Code Online (Sandbox Code Playgroud)
我开始它2-3次,我得到一个output.txt像:
FreeSpace Name
17990881280 C:
D:
????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
那么这个中文文本看起来很有趣,但我希望看到日期.我想某种程度上编码随日期而改变.因为如果我单独回显%date%>> output.txt一切都很好,我得到了日期.我该怎么办,我想获得wmic输出和日期.有任何想法吗?谢谢
在批处理文件中,我正在检查Baseboard信息,具有以下内容:
BaseboardCheck.cmd
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2* delims==" %%a in ('wmic baseboard get /format:list') DO (
if ["%%a"] EQU ["Product"] (
set PlatformInfo=%%b
if defined PlatformInfo (
echo.!PlatformInfo!
echo.!PlatformInfo!This overwrites the variable
)
)
if ["%%a"] EQU ["Version"] (
set BaseboardVersion=%%b
if defined BaseboardVersion (
echo.!BaseboardVersion!
echo.!BaseboardVersion!This overwrites the variable
)
)
)
Run Code Online (Sandbox Code Playgroud)
上面的问题:回声时变量会被覆盖而不是附加到变量上.
输出:
DX79SI
This overwrites the variable
AAG28808-600
This overwrites the variable
Run Code Online (Sandbox Code Playgroud)
我想要的是:
DX79SI
DX79SIThis overwrites the variable
AAG28808-600
AAG28808-600This overwrites the variable
Run Code Online (Sandbox Code Playgroud)
我已经花了几个小时(并将继续这样做),但我希望其他人遇到这个问题.我希望遇到这个解析问题的其他人可以在将来避免它.
由此产生的另一个问题是它似乎打破了条件逻辑. …
我正在编写一个Windows批处理文件,batch file应该在特定文件夹中输出一个文件。我希望文件名写成如下:
filename-yyyymmdd.csv
Run Code Online (Sandbox Code Playgroud)
其中 yyyymmdd 代表当前日期。
我的batch file代码如下:
cd:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn
bcp "SELECT TOP 100 * FROM xxxx.dbo.xxxxx" queryout c:\test\csv\confirmed.csv -t, -c -S xxxx\xxxxx -U xxx -P xxxxxxxxxx
set mydate=%date:~10,4%%date:~4,2%%date:~7,2%
echo %mydate%
copy c:\test\csv\confirmed.csv c:\test\csvwithdates\confirmed-%mydate%.csv
Run Code Online (Sandbox Code Playgroud)
我得到以下文件名作为输出: confirmed-ay18.csv
期望的输出: confirmed-20180528.csv
我查看了以下问题,StackOverflow但我很难实施建议的答案:
在 Windows 批处理文件中以 YYYYMMDD 格式获取日期
我究竟做错了什么?
batch-file ×5
windows ×4
cmd ×2
bcp ×1
command-line ×1
date ×1
datetime ×1
for-loop ×1
shell ×1
sql-server ×1
timestamp ×1
wmic ×1