@echo off
set excelSuffix=.xlsx
set suffix=;
SETLOCAL ENABLEDELAYEDEXPANSION
set result=
for /f "delims=" %%a in (outpu_file.txt) do ( rem 文件字符串遍历
echo %%a| findstr %excelSuffix% >nul && ( rem 字符串查找
echo %%a包含了%excelSuffix%
for /f "delims=# tokens=1" %%i in ("%%a") do ( rem 字符串分割
echo %%~nxi
rem 字符串连接
set result=!result!%%~nxi%suffix%
)
) || (
echo %%a
)
)
rem 将字符串最前面的空格去掉
rem set "result=%result:~1%"
echo 结果:!result!
ENDLOCAL
pause
参考文章:
2.https://www.jb51.net/article/193244.htm
这样看似没有问题,但是以上的代码中命令findstr返回值%errorlevel%会出现恒为1的情况,在特定情况下会造成执行异常,处理参考办法为替换字符串查找方式,参考代码如下:
@echo off
set a=abccdefg123
if "%a:abc=%"=="%a%" (echo %a%不包含abc) else echo %a%包含abc
if "%a:def=%"=="%a%" (echo %a%不包含def) else echo %a%包含def
pause