前言全局说明
Windows bat批处理+PowerShell获取文件秒
一、说明
二、分开获取 日期 和 时分秒
获取bat文件自身的日期时间 和 时分秒
1.源码
文件名:get-file-second.bat
@echo off
chcp 65001>nul
echo.
echo.
set bak_file=get-file-second.bat
:: 获取文件修改时间
setlocal
set file="C:\path\to\file.txt"
for %%a in (%bak_file%) do (
for /f "tokens=1-3 delims=:. " %%b in ('powershell "(Get-Item '%%~fa').LastWriteTime.ToString('HH:mm:ss')"') do (
set hh=%%b
set min=%%c
set sec=%%d
)
)
echo 文件的最后修改时间是:%hh%:%min%:%sec%
for %%a in (%bak_file%) do (
for /f "tokens=1-3 delims=-/ " %%b in ('powershell "(Get-Item '%%~fa').LastWriteTime.ToString('yyyy-MM-dd')"') do (
set year=%%b
set m=%%c
set d=%%d
)
)
echo 文件的最后修改日期是:%year%-%m%-%d%
endlocal
echo.
pause
tokens 是获取拆分的长度
delims 分割字符的符号,注意里面有空格
2.执行命令
.\get-file-second.bat
3.结果
三、合并获取 日期 和 时分秒
获取bat文件自身的日期时间 和 时分秒
1.源码
文件名:get-file-second.bat
@echo off
chcp 65001>nul
set bak_file=get-file-second_1.bat
:: 获取文件修改时间
setlocal
for %%a in (%bak_file%) do (
for /f "tokens=1-6 delims=:.-/ " %%b in ('powershell "(Get-Item '%%~fa').LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss')"') do (
set year=%%b
set month=%%c
set day=%%d
set hour=%%e
set minute=%%f
set second=%%g
)
)
echo 文件的最后修改时间是:%year%-%month%-%day% %hour%:%minute%:%second%
endlocal
echo.
pause
2.执行命令
.\get-file-second.bat
3.结果
四、日期 “年” 长度
1.源码
把上面
ToString('yyyy-MM-dd')
改成
ToString('yy-MM-dd')
2.执行命令
.\get-file-second.bat
3.结果
2024 只显示后两位 24
五、日期 “月” 长度
获取个位数的月份
1.源码
把
.ToString('yyyy-MM-dd')
改成
.ToString('')
2.执行命令
.\get-file-second.bat
3.结果
2月前不带 0 了
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源: