我有一个BAT脚本,它使用SQL存储过程中的数据创建一个文件。我想要做的是用日期/时间戳重命名该文件,但在谷歌搜索中还没有找到可行的解决方案。
例子。当前文件名Pcnt.txt将其更改为PcntYYYYMMDDHHMM.csv,我可以将格式更改为csv,但该文件刚刚重命名为Pcnt.csv,需要添加一些代码来插入日期/时间戳。
请帮忙
谢谢
答案 0 :(得分:6)
此代码的前四行将为您提供XP Pro及更高版本中可靠的YY DD MM YYYY HH Min Sec变量。
将ren命令与变量一起使用 - 请参阅 REN /?
的帮助@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause
答案 1 :(得分:1)
@echo off
rem Prepare environment
setlocal enableextensions
rem Check arguments. First argument must be the file to rename
if "%~1"=="" (
echo Bad arguments
goto endRename
)
if not exist "%~1" (
echo File not found
goto endRename
)
rem Get full path of file name
set "_file=%~f1"
rem Prepare filename for wmic query. Duplicate backslashes
set "_file=%_file:\=\\%"
rem Get datetime of file and rename it
for /F "delims==. tokens=2" %%f in ('wmic path cim_datafile where name^='%_file%' get creationdate /value ^| findstr /i "CreationDate"') do (
ren "%~f1" "%~n1_%%f%~x1"
)
:endRename
endlocal
如果保存为timestamp.cmd
,请将其称为timestamp myFile.csv