找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: k员外

[文件操作] 【已解决】批处理实现文件夹命名 求大佬帮忙

[复制链接]
 楼主| 发表于 2021-1-6 16:08:10 | 显示全部楼层
回复 7# Batcher


    好了  目前还有一个小问题 就是 002文件夹中的人名
会有:徐勇  (无身份证)  之类的其他文字
我运行的时候 凡是带有其他文字的就没变
可以让这种 前面也加上对应代码不
麻烦了
发表于 2021-1-6 19:55:22 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-1-7 13:51 编辑

回复 16# k员外
人名后是一个还是两个空格,是中文还是英文括号,对应的001的文件夹名是什么样的,重命名成什么样?举例
 楼主| 发表于 2021-1-7 14:20:01 | 显示全部楼层
回复 17# qixiaobin0715 比如说
徐勇  (无身份证)
二组王霄。
我想让他们的文件夹名变成610902117201jc00001徐勇  (无身份证)
                                                610902117201jc00054二组王霄
意思就是不管名字有没有带空格或者其他任何东西都可以添加上编号
发表于 2021-1-7 14:45:44 | 显示全部楼层
回复 18# k员外
未经测试
  1. @echo off
  2. set folder1=D:\abc
  3. set folder2=D:\123
  4. setlocal enabledelayedexpansion
  5. for /d %%a in ("%folder2%\*") do (
  6.     set "str=%%a"
  7.     set "str1=!str:~0,19!"
  8.     set "str2=!str:~19!"
  9.     for /d %%b in ("%folder1%\*!str2!*") do ren "%%b" "!str1!%%~nb"
  10. )
  11. pause
复制代码
发表于 2021-1-7 14:52:44 | 显示全部楼层
不精确。如果有人名:李双和李双双,就会出问题。
发表于 2021-1-7 15:02:55 | 显示全部楼层
实际上8楼代码特殊情况也会有问题。例如人名有:李双双和双双
 楼主| 发表于 2021-1-7 17:17:40 | 显示全部楼层
回复 21# qixiaobin0715


    哦哦  实在是 如果可以发图就好了
 楼主| 发表于 2021-1-7 17:22:32 | 显示全部楼层
回复 21# qixiaobin0715


    刚才运行了一下说语法命令错误
发表于 2021-1-7 17:39:45 | 显示全部楼层
假设你的姓名都为2-3位的话,获取倒数的三个字符;且判断倒数第三个字符是否为a-z和0-9排除?再拼接
发表于 2021-1-7 18:50:13 | 显示全部楼层
这个纯体力活 要精确判断 就得降低效率啊 再说楼主讲的也不是很明白
发表于 2021-1-7 20:02:01 | 显示全部楼层
回复 23# k员外
你举的两个例子:
徐勇  (无身份证)
二组王霄
前一个可能能够实现,就像terse说的那样要牺牲效率。
第二个几乎是不能完成的任务,电脑怎能判断“二组王霄”中“王霄”是人名呢?
建议使用7楼Batcher的代码处理后,特例应当不多,也好找排序就行,手工修改。
发表于 2021-1-7 22:11:24 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-1-7 22:42 编辑

回复 23# k员外
再试试,不行的话,我放弃
人名文件夹放在这D:\abc
带编码的文件夹放在这D:\123
  1. @echo off
  2. set folder1=D:\abc
  3. set folder2=D:\123
  4. setlocal enabledelayedexpansion
  5. for /d %%a in ("%folder2%\*") do (
  6.     set "str=%%~na"
  7.     set "str1=!str:~0,19!"
  8.     set "str2=!str:~19!"
  9.     for /f "delims=" %%b in ('dir /b /ad "%folder1%\*!str2!*"') do ren "%folder1%\%%b" "!str1!%%b"
  10. )
  11. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 08:46 , Processed in 0.010709 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表