我在一个3年前的问题中查看了这个问题,但无法使批处理脚本适应我的案例:Rename text files based on multiple strings in their contents
这是我的文本文件包含的内容:
<!-- ===============================================
TEXT TEXT"
===============================================
An : ONE
Ca : ONE - AVRIL 2016
Site : example.com -->
<!--===============================================
Insertion : example.com - Bannières Mobile 300X250 VF (300x250)
我想用Insertion :
行包含的内容重命名每个文件。在我的示例中,它将是:example.com - Bannières Mobile 300X250 VF (300x250)
我尝试使用这个脚本,因为它使用日期和时间原始问题,但我不知道如何使其工作
setlocal enabledelayedexpansion
REM for all files do:
for %%f in (*.txt) do (
REM get desired lines and set variables:
for /f "tokens=2,4 delims=:" %%i in (' findstr "^Insertion" %%f') do set %%i=%%j
REM construct filename:
set "name=!Insertion!.txt"
echo Filename is: "!name!"
)
有人可以帮我调整代码吗?
答案 0 :(得分:0)
也许这样的事情可以做到:
For /F "Tokens=1,2*Delims=:" %%A In ('FindStr/LBIC:"Insertion : " *.txt'
) Do For /F "Tokens=*" %%D In ("%%~C"
) Do If Not Exist "%%~D%%~xA" Ren "%%A" "%%~D%%~xA"
如果你遇到循环问题,(循环读取它刚刚重命名的文件),那么添加一个额外的小步骤:
For /F "Tokens=1,2*Delims=:" %%A In ('FindStr/LBIC:"Insertion : " *.txt'
) Do For /F "Tokens=*" %%D In ("%%~C"
) Do If Not Exist "%%~D%%~xA_" Ren "%%A" "%%~D%%~xA_"
Ren *.txt_ *.txt
注意:如果您更改*.txt
以包含完整路径,则需要调整令牌以满足附加分隔符。