自学的菜鸟 2023-01-10 22:58 采纳率: 62.5%
浏览 17
已结题

bat for循环给文件名添加前缀时,只要含有 [ 字符,就会无限循环

bat for循环给文件名添加前缀时,只要含有 [ 字符,就会无限循环


@echo off
Setlocal Enabledelayedexpansion
for %%i in (*.mp4) do (
    echo "%%i"
    ren "%%i" "[123]""%%i"
)
pause

这段代码执行会一直不断添加前缀[123],经过测试我发现是 [ 字符的问题,请问是什么原因,该如何解决

  • 写回答

1条回答 默认 最新

  • 於黾 2023-01-11 08:30
    关注

    给重命名的文件换个文件夹,不要在本文件夹内操作
    如果是高级语言,肯定是先把要操作的文件名放在一个list里,然后遍历list操作
    而在bat里,你直接遍历文件夹,没有先缓存文件,导致一边遍历,文件夹里的文件一直在变,永远遍历不完
    其实跟[字符无关,是因为[字符加在最前之后,导致排序发生变化,你修改后的文件名永远排在最后,导致永远有新的文件需要处理
    如果你把[删掉,那么文件前面加个1,它排序变得靠前,那么遍历的时候不会遍历到它,就能正常结束

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月19日
  • 已采纳回答 1月11日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图