如何将月份名称添加到一组文件中

时间:2014-03-06 18:17:17

标签: javascript perl batch-file

我是蝙蝠文件的新手,想知道我是否有办法将月份名称添加到我拥有的一组pdf文件中,而无需使用F2或tab重命名每个文件。

基本上,我为我的一个客户提供了一套结算报告,这些客户有多个pdf和excel格式的网站。我想在文件名本身中包含月份,以便我可以轻松地将它们分开。例如,我有以下报告:

  • Audi Tetbury致电信息
  • Volkswagen Tetbury致电信息
  • 宝马伦敦电话信息

我想将它们重命名为:

  • Audi Tetbury致电信息二月
  • Volkswagen Tetbury致电信息二月
  • 宝马伦敦呼叫信息二月。

有人可以帮我这个吗?我也会请你帮我提供一些资源,这样我就可以学会在将来自己创造这样的东西。

2 个答案:

答案 0 :(得分:0)

您可以使用“stat”命令获取有关每个文件的统计信息。然后你用你想要的日期grep线; stat提供“访问”,“修改”和“更改”日期。然后,您只需从该字符串中读取月份并重命名您的文件。 你可以做这样的事情,假设你想用修改它的月标记每个文件(除了修改之外你也可以尝试Access或Change):

foreach my $file ($pathToYourFolder/*.txt) # or pdf or anything
{
    my $date = `stat $file | grep Modify`;
    $date =~ /(\d+)-(\d+)-/;
    my ($year,$month) = ($1,$2);
    `mv $file $month-$file`; 
}

您还可以将月份添加到每个文件名称的末尾(您可以利用File :: Basename或其他内容确保在文件扩展名之前添加月份)。

答案 1 :(得分:0)

以下是一种可以在Windows批处理中执行此操作的方法:

@echo off
setlocal EnableDelayedExpansion

set m=100
for %%a in (January February March April May June ^
    July August September October November December) do (
   set /A m+=1
   set month[!m:~-2!]=%%a
)

:: Do the rename. Remove echo after you verify output. 
for %%a in (*.pdf) do (
    set "file=%%~dpnxa" & set "file=!file:\=\\!"
    echo file=!file!
    Call :GetFileMonthNum "!file!" C mnum     
    Call set fmonth=%%month[!mnum!]%%
    echo ren "%%a" "%%~na !fmonth!%%~xa"
    echo ren "%%~na.xls" "%%~na !fmonth!.xls"
)

goto :eof

:GetFileMonthNum <file> <created/accessed/modified> <outVar>
setlocal
for /f "tokens=1-3" %%a in (
  'wmic datafile where "name='%~1'" get creationdate^,lastaccessed ^
  ^,lastmodified^|findstr /r "\.*-.*"'
) do (
    set opts=%2
    if "!opts:~0,1!" EQU "C" set "dt=%%a"
    if "!opts:~0,1!" EQU "A" set "dt=%%b"
    if "!opts:~0,1!" EQU "M" set "dt=%%c"
    set "mm=!dt:~4,2!"
)
endlocal & set %~3=%mm%
exit /b