![Board logo](images/default/logo.gif)
标题: [文件操作] 【求助】ren 重命名 文件夹 通配符 * 星号 [打印本页]
作者: 40252492 时间: 2019-2-28 11:30 标题: 【求助】ren 重命名 文件夹 通配符 * 星号
本帖最后由 40252492 于 2019-2-28 13:41 编辑
【原文件夹名
1_57啊A
2_69嗯
3额
【要改成的文件夹名
e5958a_1啊
e597af_2嗯
e9a29d_3额
【EXCEL表格(A列是URL编码)
A列 B列 C列
e5958a 1 啊
e597af 2 嗯
e9a29d 3 额
【我现在写的公式生成的命令是
ren 1*啊* e5958a_1啊
提示:命令语法不正确。
结果我发现文件夹名貌似并不支持通配符星号→*诶!!!QAQ
请问应该怎么写这个批量改名的命令呢?
作者: 40252492 时间: 2019-2-28 13:35
for /d %%i in (1*啊*) do (ren %%i e5958a_1啊)
自己琢磨了一下,这样就能用通配符对文件夹名修改
【但是没法应对下面的情况
1_57啊A
...(假装隔了好几个)
110_99啊
会导致文件夹改名+合并的。。。
还是导出文件夹名粘到表格里吧,也不费事(摊手)
作者: Batcher 时间: 2019-2-28 13:36
把Excel里面的内容导出到1.txt以冒号作为列分隔符:
e5958a:1:啊
e597af:2:嗯
e9a29d:3:额- @echo off
- for /f "tokens=1-3 delims=:" %%a in ('type "1.txt"') do (
- for /f "delims=" %%i in ('dir /b /ad *%%c*') do (
- ren "%%i" "%%a_%%b%%c"
- )
- )
复制代码
作者: 40252492 时间: 2019-2-28 13:46
本帖最后由 40252492 于 2019-2-28 14:12 编辑
回复 3# Batcher
【额,谢谢管理员大佬,我是直接在excel里写公式的
="ren "&A2&A3&" "&A1&"_"&A2&A3
结果就是 ren 1啊 e5958a_1啊
然后下拉填充,1行1个ren,复制到txt里改后缀名bat
【可是我的素材里除了【1啊】还会有【4啊】和【19啊】,所以没法这样改(大概吧)
所以我就用下面这个bat导出了文件夹名- @echo off
- for /f "delims=" %%i in ('dir /ad/b ') do echo %%~ni>>list.txt
- pause
复制代码
再在excel里加个D列,直接1对1的改名啦。。。QvQ
【您可能会有疑问,为何会同时存在多个文件夹“啊”,因为他们还有自己的OO编码
1啊的OO编码是01
11啊的OO编码是06
123啊的OO编码是17
这些OO编码是表格中的F列,但是1个OO编码的1个URL编码(比如→01啊)一定只有一个
可是OO编码并没有写在文件夹上。。。
【有清单记录这些OO编码
A列 B列 C列 F列
e5958a 1 啊 01
e597af 2 嗯 02
e9a29d 3 额 03
e5958a 4 啊 06
【没错,文件夹名同时存在
1啊
4啊
【甚至可能是这样的形式。。。(我见过,有的)
1_57啊A
4啊
19啊←就是因为可能有这种序号是19的才没法直接批处理改名的!!!
【关于↑上面这条
[1_57啊A]的“_57”和[19啊]的“9”都会被当成通配符→*,for循环查找到2遍导致改成重名(我是不是理解错了)
作者: 40252492 时间: 2019-2-28 14:08
回复 Batcher
【额,谢谢管理员大佬,我是直接在excel里写公式的
="ren "&A2&A3&" "&A1&"_"&A2&A3
结 ...
40252492 发表于 2019-2-28 13:46 ![](http://www.bathome.net/images/common/back.gif)
【可是我用的这个导出文件夹名的批处理有个bug
·如果是1-2位数开头的文件夹名,导出的顺序是序列排序
·如果是1-3位数开头的文件夹名,导出的txt里从上到下的顺序就成了↓
100、101、102……10、11、12……1、200、201、202……20、21、22……2、300
这个样子,可能跟windows的排序方法有关,但是“没有三位数时就不出这个问题”就奇怪了
求解?(先excel升序吧)
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |