标题: [文件操作] 批处理如何将txt文件内容按行给当前目录下的文件夹重命名 [打印本页]
作者: Msaki 时间: 2020-6-1 20:46 标题: 批处理如何将txt文件内容按行给当前目录下的文件夹重命名
例:当前目录下有三个文件夹 分别为 a,b,c。还有一个名为aaa.txt的文本文件。
aaa.txt文件的内容:第一行为"你",第二行为"我",第三行为"他".
需求:将aaa.txt文件内容的每一行分别作为名字重命名a,b,c三个文件夹。使得三个文件夹a,b,c的名字分别变为"你","我","他"。
谢谢各位大佬!!
作者: flashercs 时间: 2020-6-1 23:42
- @echo off
- cd /d "%~dp0"
- <aaa.txt call :main
- pause
- exit /b
-
- :main
- setlocal EnableDelayedExpansion
- for /d %%A in (*) do (
- set /p newname=
- echo ren "%%A" "!newname!"
- ren "%%A" "!newname!"
- )
- endlocal
复制代码
作者: Msaki 时间: 2020-6-2 10:57
回复 2# flashercs
谢谢大佬,实测可用。如果有人也使用这个bat的话注意一下,今天测试的时候发现txt文件如果是UTF-8编码,而不是ANSI编码的话会出现问题。附昨天找到的另一种bat代码可同样实现这个功能,当然txt文件也必须为ANSI编码- @echo off
- (for /f "delims=" %%i in ('dir/b/ad')do (
- echo %%i
- set/p "n="
- if defined n call ren "%%i" "%%n%%"
- ))<aaa.txt
- pause
复制代码
作者: smss 时间: 2020-6-2 11:04
名称中含中文需要ANSI编码 常识了
作者: Batcher 时间: 2020-6-2 11:22
回复 4# smss
即使不含中文,用UTF-8编码也会出错吧。
作者: smss 时间: 2020-6-2 13:00
- @echo off
- (for /f "delims=" %%i in ('dir/b/ad')do set/p "n="&if defined n call ren "%%i" "%%n%%")<aaa.txt
- pause
复制代码
借助call实现变量的延迟读取与嵌套但效率不高- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%i in ('dir/b/ad')do set/p "n="&if defined n ren "%%i" "!n!")<aaa.txt
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |