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

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

例:当前目录下有三个文件夹 分别为 a,b,c。还有一个名为aaa.txt的文本文件。
aaa.txt文件的内容:第一行为"你",第二行为"我",第三行为"他".
需求:将aaa.txt文件内容的每一行分别作为名字重命名a,b,c三个文件夹。使得三个文件夹a,b,c的名字分别变为"你","我","他"。
谢谢各位大佬!!

  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
复制代码
微信:flashercs
QQ:49908356

TOP

回复 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
复制代码

TOP

名称中含中文需要ANSI编码 常识了

TOP

回复 4# smss


    即使不含中文,用UTF-8编码也会出错吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  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
复制代码

TOP

返回列表