batch-file - 搜索文件标题并相应地重命名文件
问题描述
我们有几个文件名随机的文件。对于每个文件,我们必须使用记事本打开它并转到包含报告标题的第 1 行,例如“PAST DUE REPORT 1”。然后关闭并将文件重命名为 PAST DUE REPORT 1。这太耗时了,想知道批处理脚本是否可以帮助自动化此过程。
例如:
在“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.
解决方案
我不完全知道,你的第一行是什么,但也许批次可能看起来像这样:
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%
推荐阅读
- vba - VBA Excel 进度条表单不更新。我可以减慢处理速度吗?
- ios - AdMob 同意书未显示?
- c# - 如何将 SELECT MAX 语句从 SQL 转换为 LINQ 到 SQL?
- java - 使用 Kafka Streams 对数据进行窗口化并同时处理每个窗口
- python - 在 Python 2.7 中使用 Selenium 选择按钮
- angular - Ionic 3 - 打开应用程序时如何重定向roottab
- java - gpg --list-keys 为空,但文件解密 bouncycastle 加密文件
- java - Android,围绕圆轴滚动点
- java - 在 Java 中使用反射调用超类构造函数
- java - Android Studio 看不到按钮