【发布时间】:2018-03-10 16:21:23
【问题描述】:
我创建了一个菜单来调用这个随机重命名多个文本文件的脚本,它只在 .bat 文件中单独工作。但它在我创建的菜单的上下文中不起作用,我相信这与循环有关,因为它只会重命名第一个文件!我希望有人评估情况,非常感谢已经很多了。
:4
cls
setlocal disableDelayedExpansion
set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.txt') do call :renameFile "%%F"
exit /b
:renameFile
setlocal enableDelayedExpansion
:retry
set "name="
for /l %%N in (1 1 8) do (
set /a I=!random!%%36
for %%I in (!I!) do set "name=!name!!chars:~%%I,1!"
)
echo if exist !name!.txt goto :retry
endlocal & ren %1 %name%.txt
)
pause
goto Menu
)
:5 < - here start the next option of menu
...
【问题讨论】:
-
不确定 goto 中的“菜单”是什么,但是当您调用批处理标签时,您会使用“goto :eof:”返回,请参阅stackoverflow.com/questions/6728691/batch-file-return-to-caller。看起来你还有额外的 ')' 字符。
-
这适用于什么地方?
-
在下面的答案中修改了您的脚本。不确定额外的括号是什么,或者为什么需要暂停和转到菜单调用。没有看到完整的文件很难说。
标签: batch-file random menu