下面的Batch子例程獲取當前日期的週中日期減去一天,並以參數給出的格式顯示它:如果是Y,則輸出格式爲YYMMDD,否則爲MMDDYY。這個例程解決了你的請求的主要部分。
@echo off
setlocal
rem If Format=Y, output is YYMMDD
rem If Format=M, output is MMDDYY
:OneMidweekDayLessCurrentDate format
rem Modify next line accordingly to your locale format (this one use DD/MM/YYYY)
for /F "tokens=1-3 delims=/" %%a in ("%date%") do set /A dd=1%%a-100, mm=1%%b-100, yyyy=%%c
rem Convert the Date minus one day to Julian Day Number, and get its Day Of Week (0=Sunday, ..., 6=Saturday)
set /A a=(mm-14)/12, jdn=(1461*(yyyy+4800+a))/4+(367*(mm-2-12*a))/12-(3*((yyyy+4900+a)/100))/4+dd-32076, dow=jdn%%7
rem If the dow is Sunday or Saturday, change it by the previous Monday
if %dow% equ 0 (
set /A jdn-=2
) else if %dow% equ 6 (
set /A jdn-=1
)
rem Convert the Julian Day Number back to date
set /A l=jdn+68569,n=(4*l)/146097,l=l-(146097*n+3)/4,i=(4000*(l+1))/1461001,l=l-(1461*i)/4+31,j=(80*l)/2447
set /A dd=l-(2447*j)/80,l=j/11,mm=j+2-(12*l),yyyy=100*(n-49)+i+l
if %dd% lss 10 set dd=0%dd%
if %mm% lss 10 set mm=0%mm%
rem Show the resulting date
if "%1" equ "Y" (
echo %yyyy:~-2%%mm%%dd%
) else (
echo %mm%%dd%%yyyy:~-2%
)
exit /B
在另一方面,你沒有指定哪個文件是要重命名的一句:「我有需要有文件名改爲... filename示例文件:AD140107.pos」。如果您指定了這一點,我們可以完成解決方案。
這真的不是重複的,因爲它要求提前一週(週一至週五),無視週末(坐,太陽) – dbenham
在每個位置是否只有該文件類型的一個文件?你不是真的想要週一或週五的名字,但日期格式如圖所示,對嗎?在批處理文件中,VBS是一個合理的工具嗎?它內置於Windows中。 – foxidrive