作者yamitsuki (@@)
看板EzHotKey
标题[批次] 批次更改副档名,但部分档名以"点"开头导致无法执行
时间Tue Dec 20 15:06:43 2016
想请问各位是否有碰过档名开头被加上"点"後
部分档案可以批次更改副档名,部分不行的问题呢
手边要更名的档案格式为
.123.ext 或
123.ext
其中123为档案的数字编号,ext为要被替换掉的副档名
目标是将其批次更名为
123.ext2
所以先写了以下批次档进行测试,单独放入底层资料夹执行没问题
=========================
@echo off
rename
*.ext *.ext2
=========================
又因为档案分散在多个且多层的资料夹下(各层资料夹都是数字编号)
所以就先简单的用以下批次档来处理
=========================
@echo off
dir /s ren
*.ext *.ext2
dir /s ren
*.* *.ext2
=========================
其中第二行ren是因为有些档案的档名开头存在"."的时候会没办法辨识
若直接只跑 *.ext会改不到,多加了将所有档案(*.*)都改掉
加了这行可以多处理掉一些,但还是会有一部分档案会改不到
想请问各位这样粗浅的处理是漏掉了什麽,或是否有较好的解决方式呢?
--
┌┐ ┌┐ ┌┐
└┘┌┐ ││ └┘
┌┐┌┬──┬┬┬┬┬┘└┬──┬┐┌┤│┌┬┐
│││├─ │ │├┐┌┤ ─┤│││└┘││
│└┘│┌┐│││││││└─┐││││┌┐┤│
└─┐│└┘││││││└┬─┘│└┘│││││
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.120.90.156
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/EzHotKey/M.1482217610.A.EBD.html
1F:推 LPH66: 不要 *.* 只写 .* 如何? 12/21 00:22
直接用
ren .* *.ext2 会跳
"命令语法不正确" XD
若改为
ren .*.ext *.ext2 则不会发生任何事
2F:推 nknudragon: forfiles 12/21 23:28
改用
forfiles /s /C "cmd /c ren *.ext *.ext2" 後可以解决一部分
不过档名前的
"." 还是会存在,一直找不到方法弄掉
虽然加了echo off还是会跳出一大串
"系统找不到指定的档案。"
大概是改好名的资料夹里面已经没有
*.ext 的关系吧
还有不知道是否因为档案过多,仍有部分子资料夹内的没有扫到也没改到
看来只能先降一层,从第一层的每个资料夹个别跑了(目前唯一解)
※ 编辑: yamitsuki (140.120.90.156), 12/24/2016 00:43:24
3F:→ yamitsuki: 还是很感谢两位的建议,现在剩档名前的"."得解决 :) 12/24 00:44
※ 编辑: yamitsuki (140.120.90.156), 12/24/2016 00:49:13
4F:推 eight0: for /r %%i in (*.ext) do ren "%%i" "%%~ni.ext2" 12/24 17:07
5F:→ eight0: 话说 dir 指令可以这样用? 12/24 17:07
6F:推 nknudragon: 你要查的是如何移除正档名的. 12/24 21:42
7F:→ yamitsuki: 查了一下,用/s可以显示所有目录与子目录下的档案,用 12/25 01:20
8F:→ yamitsuki: 在forfiles上也可以动作所以就没去注意比较正确的处理 12/25 01:21
9F:→ yamitsuki: 是说想找的就是如何移除正档名开头的.没错,还在找寻中 12/25 01:22
10F:→ yamitsuki: 批次处理的部分eight0版友提供的方法已经解决,感谢 12/25 01:34