For loop 根据目录中包含的文本重命名目录中的所有文件
我试图循环遍历文件夹中的所有.lss文件,并获取两个标记之间的字符串,保存该值并使用该字符串重命名文件 例如:For loop 根据目录中包含的文本重命名目录中的所有文件,for-loop,batch-file,batch-rename,For Loop,Batch File,Batch Rename,我试图循环遍历文件夹中的所有.lss文件,并获取两个标记之间的字符串,保存该值并使用该字符串重命名文件 例如: 42982934829.lss -> contains string: <surveyls_title><![CDATA[J.3200-1118 - Project Title]]></surveyls_title> Rename to `J.3200-1118 - Project Title.lss` 这是我到目前为止的资料,但我担心我
42982934829.lss -> contains string:
<surveyls_title><![CDATA[J.3200-1118 - Project Title]]></surveyls_title>
Rename to `J.3200-1118 - Project Title.lss`
这是我到目前为止的资料,但我担心我的语法严重错误
@Echo off
Set Folder=X:\RenameTest
Set Files=*.lss
PushD %Folder%
For %%A in (%Files%) Do For /f %%B IN (
'findstr "<surveyls_title>.*</surveyls_title>" "%ProjectTitle%"'
) Do Call :Rename ..
PopD
Goto :Eof
:Rename
Echo Ren %1 "%ProjectTitle%"
我想这就是你想要的
@echo off
pushd "X:\RenameTest"
for %%a in (*.lss) do for /f "tokens=3*delims=[]" %%i in ('type "%%a" ^| find "</surveyls_title>"') do echo ren "%%~a" "%%~i%%~xa"
popd
一旦您对打印结果满意,就从行中删除echo。我想这就是您想要的
@echo off
pushd "X:\RenameTest"
for %%a in (*.lss) do for /f "tokens=3*delims=[]" %%i in ('type "%%a" ^| find "</surveyls_title>"') do echo ren "%%~a" "%%~i%%~xa"
popd
一旦您对打印结果满意,只需从行中删除echo即可。您还可以使用正则表达式提取标题: @回声关闭&color 0A 标题使用正则表达式提取标题 设置InputFile=42982934829.lss 调用:提取标题%InputFile%Title 回显%Title% 暂停和退出 ::-------------------------------------------- :摘录标题 echo WScript.StdOut.WriteLine Extract_TitleData^ 回波函数提取_TitleData^ echo Data=WScript.StdIn.ReadAll echo Set re=New RegExp echo re.Global=True echo re.IgnoreCase=真 echo re.Pattern=\[CDATA\[.*?\]\] 重复执行数据中的每个匹配的回显^ echo Title=Match.SubMatches0^ 下一个回声 echo Extract_Title=标题 回波结束函数 >%tmp%\%~n0.vbs 对于'cscript/nologo%tmp%\%~n0.vbs^<%1'中的/f delims=%A,请设置%2=%A 如果存在%tmp%\%~n0.vbs Del%tmp%\%~n0.vbs 退出/B ::--------------------------------------------
还可以使用正则表达式提取标题: @回声关闭&color 0A 标题使用正则表达式提取标题 设置InputFile=42982934829.lss 调用:提取标题%InputFile%Title 回显%Title% 暂停和退出 ::-------------------------------------------- :摘录标题 echo WScript.StdOut.WriteLine Extract_TitleData^ 回波函数提取_TitleData^ echo Data=WScript.StdIn.ReadAll echo Set re=New RegExp echo re.Global=True echo re.IgnoreCase=真 echo re.Pattern=\[CDATA\[.*?\]\] 重复执行数据中的每个匹配的回显^ echo Title=Match.SubMatches0^ 下一个回声 echo Extract_Title=标题 回波结束函数 >%tmp%\%~n0.vbs 对于'cscript/nologo%tmp%\%~n0.vbs^<%1'中的/f delims=%A,请设置%2=%A 如果存在%tmp%\%~n0.vbs Del%tmp%\%~n0.vbs 退出/B ::--------------------------------------------
兴趣字符串是否总是在一个单独的行中?总是只有一个标签吗?项目标题可以单独包含括号[/]吗?项目标题是否包含对文件名无效的字符?感兴趣的字符串是否总是在单独的一行中?总是只有一个标签吗?项目标题可以单独包含括号[/]吗?项目标题是否包含对文件名无效的字符?