标题: [文本处理] [已解决]批处理从两个文件中读取变量,先运行第一个变量,遍历第二个文件的全部变量 [打印本页]
作者: thp2008 时间: 2023-9-8 14:56 标题: [已解决]批处理从两个文件中读取变量,先运行第一个变量,遍历第二个文件的全部变量
本帖最后由 thp2008 于 2023-9-8 17:21 编辑
比如
MVName.txt
XX电影.www.xxx.com.
NN.影视.www.abc.com.
......
FileLX.txt
*.mp4
*.mkv
.....- for /f "delims=" %%a in ('type "MVName.txt"') do (set oldname=%%a)
- for /f "delims=" %%b in ('type "FileLX.txt"') do (set wildcard=%%b)
- newname 设置为空值。
复制代码
我是想用下面的批量改名批处理,但想自动从上面两个文本文件读取变量,就是我从MVName.txt中读取第一行后,将FileLX.txt中所有行,都运行一遍。然后,再从MVName.txt读取第二行,再将FileLX.txt 的所有行,都跑一遍,这个应该怎么写?- @echo off
- setlocal
-
- set /p oldname=请输入批量改名中需要更换的重复部分:
- set newname=
- set /p wildcard=请输入文件名通配符列表(缺省为所有文件,即“*”):
-
- for /f "usebackq delims=" %%i in (`dir /s/b/a-d %wildcard%`) do (
- setlocal enabledelayedexpansion
-
- set var=%%~nxi
- set "var=!var:%oldname%=%newname%!"
-
- if not "%%~nxi"=="!var!" (echo 正在改名:"%%i" =》 "!var!")
- echo %%i |find "mutiren.bat" >nul || ren "%%i" "!var!" >nul
-
- endlocal
- )
-
- endlocal
复制代码
作者: 77七 时间: 2023-9-8 15:49
- MVName.txt
- XX电影.www.xxx.com.
- NN.影视.www.abc.com.
- ......
-
- FileLX.txt
- *.mp4
- *.mkv
- .....
复制代码
要怎么改?
作者: qixiaobin0715 时间: 2023-9-8 15:56
不要说一半藏一半,说说具体需求。不一定非要在你提供的代码上修改。
作者: Batcher 时间: 2023-9-8 16:05
回复 1# thp2008 - @echo off
- cd /d "%~dp0"
- for /f "delims=" %%i in ('type "FileLX.txt"') do (
- for /f "delims=" %%j in ('dir /b /s /a-d %%i 2^>nul') do (
- for /f "delims=" %%k in ('type "MVName.txt"') do (
- set "OldFull=%%j"
- set "OldName=%%~nxj"
- setlocal enabledelayedexpansion
- set NewName=!OldName:%%k=!
- if "!OldName!" neq "!NewName!" (
- ren "!OldFull!" "!NewName!"
- )
- endlocal
- )
- )
- )
复制代码
作者: thp2008 时间: 2023-9-8 17:19
不要说一半藏一半,说说具体需求。不一定非要在你提供的代码上修改。
qixiaobin0715 发表于 2023-9-8 15:56
不好意思,可能我表述的不是很清楚。
作者: thp2008 时间: 2023-9-8 17:20
有个细节,需要注意,由于MVName.txt中,有中文字符,所以一定保存为ANSI,不然会不改名。刚开始测试时,没反应,后来我发现是这个问题。
作者: thp2008 时间: 2023-9-8 17:47
- set NewName=!OldName:%%k=!
复制代码
我再想请教一下,如果在4楼的这个代码中,上面这句,表示,新文件名=旧文件名去除%%k
如果我想给文件名加上%%k 该如何表示。也就是我想给所有的文件名前面加上%%k这个变量。
作者: Batcher 时间: 2023-9-10 18:26
回复 7# thp2008 - set "NewName=%%k!OldName!"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |