Date Batch命令-在文件夹末尾添加日期
我目前运行一个批处理命令,在advanced中创建一个文件夹1天,并将其标记为MMDDYY。 除了一位数的天数外,一切正常。目前名为“第二天”的文件夹有12214个,是否可以将其命名为120214Date Batch命令-在文件夹末尾添加日期,date,batch-file,Date,Batch File,我目前运行一个批处理命令,在advanced中创建一个文件夹1天,并将其标记为MMDDYY。 除了一位数的天数外,一切正常。目前名为“第二天”的文件夹有12214个,是否可以将其命名为120214 @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
@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%"
:loop
set /a DD+=1
if %DD% gtr 31 (
set DD=1
set /a MM+=1
if %MM% gtr 12 (
set MM=1
set /a YY+=1
set /a YYYY+=1
)
)
xcopy /d:%MM%-%DD%-%YYYY% /l . .. >nul 2>&1 || goto loop
echo %DD%/%MM%/%YYYY%
mkdir "C:\Users\Name\Desktop\%mm%%dd%%yy%\"
pause
一旦操作完成,您需要再次填充数据。此外,您还需要更多的逻辑来处理月份变化 @回音 setlocal enableextensions disabledelayedexpansion rem检索数据 对于“wmic OS Get localdatetime/value”中的/f令牌=2 delims==%%a,请设置dt=%%a 设置YY=%dt:~2,2% 设置YYYY=%dt:~0,4% 设置MM=%dt:~4,2% 设置DD=%dt:~6,2% 设置HH=%dt:~8,2% 设置最小值=%dt:~10,2% 设置秒=%dt:~12,2% rem删除日期元素中的填充并增加日期 设置/a y=%YYYY%,m=100%MM%%%100,d=100%DD%%%100+1 rem计算月长 集合/a ml=30+m+m/8%%2,如果%m%equ 2集合/a ml=ml-2+3-y%%4/3-99-y%%100/99+399-y%%400/399 rem调整明天日期的日/月/年 如果%d%gtr%ml%set/a d=1,m=m%%12+1,y+=%m%/12 rem填充日期元素并再次转换为原始变量 设置/a m+=100,d+=100 设置YYYY=%y% 设置YY=%y:~-2% 设置MM=%m:~-2% 设置DD=%d:~-2% 明天回音:%YYYY%/%MM%/%DD%
只需将文件夹创建添加到所需的格式中批处理对于日期数学来说很麻烦。闰年、月/年变化等都是一件很难处理的事情。我建议使用JScript日期对象,在该对象中,所有此类转换都将自动处理 下面是一个batch/JScript混合脚本。使用.bat扩展名保存它,并按照您习惯于运行典型批处理脚本的方式运行它
@if (@a==@b) @end /* JScript ignores this multiline comment
:: batch portion
@echo off
setlocal
for /f "tokens=1-3" %%I in ('cscript /nologo /e:JScript "%~f0"') do (
set "MM=%%I"
set "DD=%%J"
set "YYYY=%%K"
)
xcopy /d:%MM%-%DD%-%YYYY% /l . .. >nul 2>&1 || goto loop
echo %MM%/%DD%/%YYYY%
mkdir "%userprofile%\Desktop\%MM%%DD%%YYYY:~-2%\"
pause
goto :EOF
:: end batch portion / begin JScript */
function zeroPad(what) { return (what+'').length < 2 ? '0'+what : what; }
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
WSH.Echo([
zeroPad(tomorrow.getMonth() + 1),
zeroPad(tomorrow.getDate()),
tomorrow.getFullYear()
].join(' '));
你应该重新考虑你的命名惯例。应避免使用2位数的年份-使用4。此外,还应使用yyyymmdd,以便文件夹按时间顺序排序。