【问题标题】:Rename multiple files randomly随机重命名多个文件
【发布时间】: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


【解决方案1】:

大概是这样的:

:4
cls

setlocal disableDelayedExpansion
set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.txt') do call :renameFile "%%F"

pause
goto Menu

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

if exist !name!.txt goto :retry
endlocal & ren %1 %name%.txt
goto :eof

exist 线上的回声很奇怪。好像没有那个 ren 可能会出错。

【讨论】:

  • 效果很好!但是完成后bat文件正在关闭!他肯定会回到菜单。
  • 不是 goto 菜单更有意义。我更新了我的答案。很高兴它对你有用。
【解决方案2】:

经过更好的审查后,我看到exit /b 是在goto: eof 返回到上面的命令之后关闭窗口的命令。所以,我替换exit /b 部分:

pause
goto Menu

现在它返回到我的菜单

:Menu

完整代码:

cls

setlocal disableDelayedExpansion
set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.txt') do call :renameFile "%%F"

pause
goto Menu

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

if exist !name!.txt goto :retry
endlocal & ren %1 %name%.txt

goto :eof

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2022-01-13
    • 2019-11-02
    相关资源
    最近更新 更多