Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理编程:循环时多次调用函数和检索结果_Batch File - Fatal编程技术网

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!"
)