我正在尝试编写执行以下操作的批处理脚本:
将文件夹拖放到批处理脚本上时,它会处理该文件夹中的每个文件。
我遇到了一个问题……
我没有看到你正在使用延迟扩展的地方。所以,要么禁用它 setlocal DisableDelayedExpansion 在批处理文件的开头或通过删除行删除它 setlocal EnableDelayedExpansion 。
setlocal DisableDelayedExpansion
setlocal EnableDelayedExpansion
但是,如果你想保留它,请执行以下操作:
@echo off SetLocal EnableDelayedExpansion rem Code above (^^) if exists. Setlocal DisableDelayedExpansion set "folder=%~1" set "count=0" for /R "%folder%" %%G in (*) do ( set "fullpath=%%~fG" set "fileExtension=%%~xG" call :processFile ) goto end :processFile echo "fullpath = %fullpath%" echo "fileExtension = %fileExtension%" ren "%fullpath%" "temporary_filename_500%fileExtension%" set /a "count+=1" echo/ goto :eof :end echo "%count% files processed." pause setlocal EnableDelayedExpansion rem Your code below with active delayed expansion:
注意:
set
set "var=value"
set /a
set /a "var+=1"
set /?
for
f
%%~fG
echo.
echo/
另见第5阶段(延迟扩展) 这个 回答有关批处理文件的解释方式。