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

[文本处理] [已解决]批处理从两个文件中读取变量,先运行第一个变量,遍历第二个文件的全部变量

本帖最后由 thp2008 于 2023-9-8 17:21 编辑

比如
MVName.txt
XX电影.www.xxx.com.
NN.影视.www.abc.com.
......

FileLX.txt
*.mp4
*.mkv
.....
  1. for /f "delims=" %%a in ('type "MVName.txt"') do (set oldname=%%a)
  2. for /f "delims=" %%b in ('type "FileLX.txt"') do (set wildcard=%%b)
  3. newname 设置为空值。
复制代码
我是想用下面的批量改名批处理,但想自动从上面两个文本文件读取变量,就是我从MVName.txt中读取第一行后,将FileLX.txt中所有行,都运行一遍。然后,再从MVName.txt读取第二行,再将FileLX.txt 的所有行,都跑一遍,这个应该怎么写?
  1. @echo off
  2. setlocal
  3. set /p oldname=请输入批量改名中需要更换的重复部分:
  4. set newname=
  5. set /p wildcard=请输入文件名通配符列表(缺省为所有文件,即“*”):
  6. for /f "usebackq delims=" %%i in (`dir /s/b/a-d %wildcard%`) do (
  7. setlocal enabledelayedexpansion
  8. set var=%%~nxi
  9. set "var=!var:%oldname%=%newname%!"
  10. if not "%%~nxi"=="!var!" (echo 正在改名:"%%i" =》 "!var!")
  11. echo %%i |find "mutiren.bat" >nul || ren "%%i" "!var!" >nul
  12. endlocal
  13. )
  14. endlocal
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

不要说一半藏一半,说说具体需求。不一定非要在你提供的代码上修改。
qixiaobin0715 发表于 2023-9-8 15:56


不好意思,可能我表述的不是很清楚。

TOP

有个细节,需要注意,由于MVName.txt中,有中文字符,所以一定保存为ANSI,不然会不改名。刚开始测试时,没反应,后来我发现是这个问题。

TOP

  1. set NewName=!OldName:%%k=!
复制代码
我再想请教一下,如果在4楼的这个代码中,上面这句,表示,新文件名=旧文件名去除%%k

如果我想给文件名加上%%k 该如何表示。也就是我想给所有的文件名前面加上%%k这个变量。

TOP

返回列表