windows - 使用带时间戳的批处理脚本创建目录

标签 windows batch-file

@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a-%%b)

set mydir="%mydate%-%mytime%"

mkdir %mydir%

使用上面的批处理脚本,我可以创建一个目录名称,如 2015-05-14-11-30 AM

现在我需要将时间转换为 24 格式并删除 AM/PM

预期的文件夹名称 - 2015-05-14-11-30

怎么做?

最佳答案

我认为你应该使用 %TIME% 伪变量。

这是一个例子:

@echo off

For /f "tokens=1-4 delims=/:." %%a in ("%TIME%") do (
    SET HH24=%%a
    SET MI=%%b
    SET SS=%%c
    SET FF=%%d
)

For /f "tokens=1-2 delims=/,." %%a in ("%SS%") do (
    SET JUST_SS=%%a
)

echo HH24=%HH24%
echo MI=%MI%
echo SS=%SS%
echo FF=%FF%
echo JUST_SS=%JUST_SS%

echo mytime=%HH24%-%MI%-%JUST_SS%

好吧,我意识到如果小时小于 10,HH24 有一个空白空间,所以这里有另一个解决方案,使用 %time:

SET HH=%time:~0,2%
if "%HH:~0,1%" == " " SET HH=0%HH:~1,1%
    echo HH=%HH%

SET MI=%time:~3,2%
if "%MI:~0,1%" == " " SET MI=0%MI:~1,1%
    echo MI=%MI%

SET SS=%time:~6,2%
if "%SS:~0,1%" == " " SET SS=0%SS:~1,1%
    echo SS=%SS%

按照@Stephan 指出的建议(TIME 变量取决于区域设置),我们可以使用这种方法:

@echo off

for /f "delims=" %%a in ('wmic OS get localdatetime  ^| find "."') do set datetime=%%a

set "YYYY=%datetime:~0,4%"
set "MM=%datetime:~4,2%"
set "DD=%datetime:~6,2%"
set "HH=%datetime:~8,2%"
set "MI=%datetime:~10,2%"
set "SS=%datetime:~12,2%"

set fullstamp=%YYYY%-%MM%-%DD%-%HH%-%MI%-%SS%
echo fullstamp=%fullstamp%

关于windows - 使用带时间戳的批处理脚本创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30230411/

相关文章:

ftp - 将文本文件复制到 FTP 站点的批处理文件

mysql - 将excel中更新的详细信息上传到mysql数据库

windows - 为什么 findstr 不能正确处理大小写(在某些情况下)?

windows - Win32 API - 当前窗口到仅消息窗口并返回到原始窗口

batch-file - 使用批处理文件启用计划任务

batch-file - 为什么我不能使用 gcloud 的批处理文件连续运行 2 个命令

powershell - 通过批处理文件运行多个 VS Code 项目(一次)

php - 无法通过 docker 容器中的 apache 访问本地网站(windows 和 docker 工具箱)

windows - Win64 异常堆栈遍历不显示条目

c# - 打开其他应用程序后在后台保持 TCP 连接 Windows Phone 8