[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【求助】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
请问应该怎么写这个批量改名的命令呢?

for /d %%i in (1*啊*) do (ren %%i e5958a_1啊)
自己琢磨了一下,这样就能用通配符对文件夹名修改
【但是没法应对下面的情况
1_57啊A
...(假装隔了好几个)
110_99啊
会导致文件夹改名+合并的。。。
还是导出文件夹名粘到表格里吧,也不费事(摊手)

TOP

把Excel里面的内容导出到1.txt以冒号作为列分隔符:
e5958a:1:啊
e597af:2:嗯
e9a29d:3:额
  1. @echo off
  2. for /f "tokens=1-3 delims=:" %%a in ('type "1.txt"') do (
  3.     for /f "delims=" %%i in ('dir /b /ad *%%c*') do (
  4.         ren "%%i" "%%a_%%b%%c"
  5.     )
  6. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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导出了文件夹名
  1. @echo off
  2. for /f "delims=" %%i in ('dir /ad/b ') do echo %%~ni>>list.txt
  3. 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遍导致改成重名(我是不是理解错了)

TOP

回复  Batcher

【额,谢谢管理员大佬,我是直接在excel里写公式的
="ren "&A2&A3&" "&A1&"_"&A2&A3
结 ...
40252492 发表于 2019-2-28 13:46


【可是我用的这个导出文件夹名的批处理有个bug
·如果是1-2位数开头的文件夹名,导出的顺序是序列排序
·如果是1-3位数开头的文件夹名,导出的txt里从上到下的顺序就成了↓
100、101、102……10、11、12……1、200、201、202……20、21、22……2、300
这个样子,可能跟windows的排序方法有关,但是“没有三位数时就不出这个问题”就奇怪了
求解?(先excel升序吧)

TOP

返回列表