2013-07-03 108 views
0

我想批量重命名幾個文件。
我需要它看起來像DD.MM.YY - # week randomname
讓我們說2.7.2013-27.week abcdefg.xls批量重命名周#

到目前爲止,我使用

for /f "tokens=1-5 delims=/ " %%d in ("%date%") do (
    rename "C:\TEST\123.xlsx" %%e%%f%%g.xlsx 
) 

DD.MM.YYYY出現,是完美的第一部分。
你能幫忙嗎?對於GNU

+0

什麼[谷歌](http://www.wilderssecurity.com/showpost.php?s= 69fff23adfbf254528fec9205c2d5532&p = 1447643&postcount = 7)? – Endoro

回答

2

Windows代碼:

awk "BEGIN {print strftime(\"%U\",mktime(\"YYYY MM DD hh mm ss\"))}" 

例子:

>for /f %i in ('awk "BEGIN {print strftime(\"%U\",mktime(\"2013 07 03 12 00 00\"))}"') do @echo %i 
26 
+0

也許我應該提到我對批處理文件不擅長,今天是我第一次使用它。如果文件是「D:\ TEST \ 123.xlsx」,請給我寫完整的代碼,將其重命名爲當前的「DD.MM.YY - #week randomname」?非常感謝 – Paul

+0

我確實給出了提示。很少編寫完整的腳本。 – captcha

+0

這不是一本書,它就像一條線。 – Paul

1

這會給你日期,一年的星期,並且可以使用隨機!!隨機!隨着延遲擴展給你一個隨機文件名。

下面是一個示例腳本 - 年月日在文件夾中正確排序,如果這對您很重要。

@echo off 
call datetime.bat /quiet 
setlocal enabledelayedexpansion 
for %%a in (*.xlsx) do (
    rename "%%a" "%year%.%month%.%day% - %woy%.week !random!!random!%%~xa" 
) 

這裏是datetime.bat

:: date time using WSH/VBS 
    :: datetime.bat V4.2 
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
    :: 
    :: This uses Windows Scripting Host to set variables to 
    :: the current date/time/day/day_number/week_of_year etc 
    :: for Win9x/ME/NT/W2K/XP/Vista/Win7/Win8 etc 
    :: Thanks go to Todd Vargo for his scripting 
    :: 
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
    @echo off 
    set TmpFile="%temp%.\tmp.vbs" 
    echo> %TmpFile% n=Now 
    echo>>%TmpFile% With WScript 
    echo>>%TmpFile% .Echo "set m1=" + monthname(month(n), true) 
    echo>>%TmpFile% .Echo "set m2=" + monthname(month(n), false) 
    echo>>%TmpFile% .Echo "set woy=" + CStr(datepart("ww", n)) 
    echo>>%TmpFile% .Echo "set year=" + CStr(Year(n)) 
    echo>>%TmpFile% .Echo "set yr=" + Right(Year(n),2) 
    echo>>%TmpFile% .Echo "set month="+ Right(100+Month(n),2) 
    echo>>%TmpFile% .Echo "set day=" + Right(100+Day(n),2) 
    echo>>%TmpFile% .Echo "set hour=" + Right(100+Hour(n),2) 
    echo>>%TmpFile% .Echo "set min=" + Right(100+Minute(n),2) 
    echo>>%TmpFile% .Echo "set sec=" + Right(100+Second(n),2) 
    echo>>%TmpFile% .Echo "set dow=" + WeekDayName(Weekday(n),1) 
    echo>>%TmpFile% .Echo "set dow2=" + WeekDayName(Weekday(n)) 
    echo>>%TmpFile% .Echo "set iso=" + CStr(1 + Int(n-2) mod 7) 
    echo>>%TmpFile% .Echo "set iso2=" + CStr(Weekday(n,2)) 
    echo>>%TmpFile% End With 
    cscript //nologo "%temp%.\tmp.vbs" > "%temp%.\tmp.bat" 
    call "%temp%.\tmp.bat" 
    del "%temp%.\tmp.bat" 
    del %TmpFile% 
    set TmpFile= 
    set stamp=%year%-%month%-%day%.%hour%_%min%_%sec% 

    if not "%~1"=="" goto :EOF 

    echo The year is "%year%" or "%yr%" 
    echo The month is "%month%" "%m1%" "%m2%" 
    echo The day is "%day%" "%dow%" "%dow2%" 
    echo. 
    echo ISO8601 Day-Of-Week number is "%iso%" and week of year is: "%woy%" 

    echo. 
    echo The time in hh:mm:ss is "%hour%:%min%:%sec%" 
    echo The hour is "%hour%" 
    echo The minute is "%min%" 
    echo The second is "%sec%" 
    echo. 

    echo The date and time stamp is "%stamp%" 
    echo. 
    echo date A yyyymmdd "%year%%month%%day%" 
    echo date B mmddyyyy "%month%%day%%year%" 
    echo date C ddmmyyyy "%day%%month%%year%" 
    echo date D yymmdd "%yr%%month%%day%" 
    echo date E mmddyy "%month%%day%%yr%" 
    echo date F ddmmyy "%day%%month%%yr%" 
    pause 
    :: datetime.bat 
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
3
@echo off 
for /F "tokens=1-5 delims=/" %%d in ("%date%") do (
    set ddmmyy=%%e.%%f.%%g 
    set /A dd=1%%e-100, mm=1%%f-100, yy=%%g, yyM1=yy-1 
) 
rem Get Julian Day Number of today's date 
if %mm% lss 3 set /A mm+=12, yy-=1 
set /A a=yy/100, b=a/4, c=2-a+b, e=36525*(yy+4716)/100, f=306*(mm+1)/10, jdn=c+dd+e+f-1524 
rem Subtract Julian Day Number of January/1st (get number of days in year) 
set /A a=yyM1/100, b=a/4, c=2-a+b, e=36525*(yyM1+4716)/100, f=306*14/10, days=jdn-(c+1+e+f-1524)+1 
rem Get number of week 
set /A week=(days+3)/7+1 
ECHO rename "C:\TEST\123.xlsx" "%ddmmyy% - %week%.week !random!!random!.xlsx" 

參考:http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html

+0

謝謝,可惜它似乎不起作用,出於某種原因。 :( – Paul

+0

@Paul:看起來,答案頁拆分長行和插入換行符!再次複製程序,plase ... – Aacini

+0

沒有:( 我試圖複製它,用虛線玩了一下或者如此...它說: 缺少操作數 重命名「C:\ TEST \ 123.xlsx」「.. - -502.week!random !! random!.xlsx」 這就是它的外觀http ://img14.imageshack.us/img14/4486/pu.png – Paul