我是蝙蝠文件的新手,想知道我是否有办法将月份名称添加到我拥有的一组pdf文件中,而无需使用F2或tab重命名每个文件。
基本上,我为我的一个客户提供了一套结算报告,这些客户有多个pdf和excel格式的网站。我想在文件名本身中包含月份,以便我可以轻松地将它们分开。例如,我有以下报告:
我想将它们重命名为:
有人可以帮我这个吗?我也会请你帮我提供一些资源,这样我就可以学会在将来自己创造这样的东西。
答案 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