Batch file 批处理编程:循环时多次调用函数和检索结果
我有一个批处理脚本,其中我循环遍历文件夹中的所有文件名,然后调用一个命令以从文件名中删除扩展名。我希望在每次迭代时将文件名(不带扩展名)存储在名为Batch file 批处理编程:循环时多次调用函数和检索结果,batch-file,Batch File,我有一个批处理脚本,其中我循环遍历文件夹中的所有文件名,然后调用一个命令以从文件名中删除扩展名。我希望在每次迭代时将文件名(不带扩展名)存储在名为result的变量中,以便以后重用 RemoveExtension功能工作正常。但是,我无法检索结果并将其存储在\u result变量中。当我打印它时,它总是空的。谢谢你的帮助 @echo OFF SETLOCAL EnableDelayedExpansion set "_result=" for /f "delims=" %%i in ('dir
result
的变量中,以便以后重用
RemoveExtension
功能工作正常。但是,我无法检索结果并将其存储在\u result
变量中。当我打印它时,它总是空的。谢谢你的帮助
@echo OFF
SETLOCAL EnableDelayedExpansion
set "_result="
for /f "delims=" %%i in ('dir "%~1\*.txt" /b') DO (
echo.filepath: "%~1\%%i"
call :RemoveExtension "%%i"
echo._result: "%_result%" // The "_result" variable is always EMPTY ""
)
goto :eof
:RemoveExtension
SETLOCAL
REM echo "%~1"
set "filename=%~1"
:loop
if "%filename:~-1%" NEQ "." (
set "filename=%filename:~0,-1%
goto :loop
)
set "filename=%filename:~0,-1%"
echo "%filename%"
ENDLOCAL & set "_result=%filename%"
goto :eof
试试这个…用更简单的方法删除扩展。因为您正在为循环更改
\u结果
,所以需要使用访问它代码>而不是%
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET "_result="
FOR /f "delims=" %%i IN ('dir "%~1\*.txt" /b') DO (
ECHO.filepath: "%~1\%%i"
SET _result=%%~ni
ECHO._result: "!_result!"
)