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

[文件操作] 批处理如何将txt文件内容按行给当前目录下的文件夹重命名

[复制链接]
发表于 2020-6-1 20:46:53 | 显示全部楼层 |阅读模式
例:当前目录下有三个文件夹 分别为 a,b,c。还有一个名为aaa.txt的文本文件。
aaa.txt文件的内容:第一行为"你",第二行为"我",第三行为"他".
需求:将aaa.txt文件内容的每一行分别作为名字重命名a,b,c三个文件夹。使得三个文件夹a,b,c的名字分别变为"你","我","他"。
谢谢各位大佬!!
发表于 2020-6-1 23:42:20 | 显示全部楼层
  1. @echo off
  2. cd /d "%~dp0"
  3. <aaa.txt call :main
  4. pause
  5. exit /b

  6. :main
  7. setlocal EnableDelayedExpansion
  8. for /d %%A in (*) do (
  9.   set /p newname=
  10.   echo ren "%%A" "!newname!"
  11.   ren "%%A" "!newname!"
  12. )
  13. endlocal
复制代码
 楼主| 发表于 2020-6-2 10:57:50 | 显示全部楼层
回复 2# flashercs
谢谢大佬,实测可用。如果有人也使用这个bat的话注意一下,今天测试的时候发现txt文件如果是UTF-8编码,而不是ANSI编码的话会出现问题。附昨天找到的另一种bat代码可同样实现这个功能,当然txt文件也必须为ANSI编码
  1. @echo off
  2. (for /f "delims=" %%i in ('dir/b/ad')do (
  3. echo %%i
  4. set/p "n="
  5. if defined n call ren "%%i" "%%n%%"
  6. ))<aaa.txt
  7. pause
复制代码
发表于 2020-6-2 11:04:08 | 显示全部楼层
名称中含中文需要ANSI编码 常识了
发表于 2020-6-2 11:22:59 | 显示全部楼层
回复 4# smss


    即使不含中文,用UTF-8编码也会出错吧。
发表于 2020-6-2 13:00:53 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=" %%i in ('dir/b/ad')do set/p "n="&if defined n call ren "%%i" "%%n%%")<aaa.txt
  3. pause
复制代码
借助call实现变量的延迟读取与嵌套但效率不高
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in ('dir/b/ad')do set/p "n="&if defined n ren "%%i" "!n!")<aaa.txt
  3. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 19:41 , Processed in 0.017216 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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