搜索文件标题并相应地重命名文件

时间:2018-08-06 20:13:59

标签: batch-file rename

我们有几个文件带有随机文件名。对于每个文件,我们必须使用记事本打开它,然后转到包含报告标题的第1行,例如“ PAST DUE REPORT 1”。然后关闭并将文件重命名为PAST DUE REPORT1。这太耗时,并且想知道批处理脚本是否可以帮助自动执行此过程。

例如:

在“ C:\ FILES”中,我有FILE1,FILE2和FILE3。这些文件不是任何特定格式,因此批处理脚本必须搜索所有文件格式。

如果第1行上存在关键字“ PAST DUE REPORT 1”,则将文件重命名为“ PAST DUE REPORT 1”并将其移至“ C:\ REPORTS”。重复此操作,直到每个文件都被重命名并移动为止。

我也愿意接受其他建议。

------已编辑------

这是其中一个文件的实际示例。

NOTICE OF PAST DUE PAYMENT on MM/DD/YYYY for Account 123 Loan 0005

Your auto loan 2010 Toyota Sienna payment due on MM/DD/YY is 14 days past due. The standard payment is $200.00.  The total past due is $200.00. The late charge is $15.00.

1 个答案:

答案 0 :(得分:0)

我不确定,您的第一行内容是什么,但是批处理可能看起来像这样:

for %%F in (C:\FILES\*.*) do call :renamefile "%%~fF"
exit
:renamefile {String} file
set /p "firstLine=<%~1"
echo/%firstLine%|findstr /i /c:"PAST DUE REPORT"||exit/B
::Without knowing more about the first line, I can't set the correct name
set "newName=%firstLine%"
ren %1 "%newName%"
move "%~dp1%newName%" "C:\REPORTS"

也许我经常在自己的项目中使用的此功能也可以提供帮助:

:createUniqueName {String} file
set "return=%~f1"
if not exist "%~f1" exit /B 0
set /a i=0
:_createUniqueName
set /a i+=1
set "return=%~dpn1 (%i%)%~x1"
if exist "%return%" goto _createUniqueName
exit /b %i%