[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

  1. MVName.txt
  2. XX电影.www.xxx.com.
  3. NN.影视.www.abc.com.
  4. ......
  5. FileLX.txt
  6. *.mp4
  7. *.mkv
  8. .....
复制代码


要怎么改?
bat小白,请多指教!谢谢!

TOP

不要说一半藏一半,说说具体需求。不一定非要在你提供的代码上修改。

TOP

回复 1# thp2008
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('type "FileLX.txt"') do (
  4.     for /f "delims=" %%j in ('dir /b /s /a-d %%i 2^>nul') do (
  5.         for /f "delims=" %%k in ('type "MVName.txt"') do (
  6.             set "OldFull=%%j"
  7.             set "OldName=%%~nxj"
  8.             setlocal enabledelayedexpansion
  9.             set NewName=!OldName:%%k=!
  10.             if "!OldName!" neq "!NewName!" (
  11.                 ren "!OldFull!" "!NewName!"
  12.             )
  13.             endlocal
  14.         )
  15.     )
  16. )
复制代码
1

评分人数

    • thp2008: 老大真牛,一下子就解决了。测试没问题。技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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


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

TOP

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

TOP

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

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

TOP

回复 7# thp2008
  1. set "NewName=%%k!OldName!"
复制代码
1

评分人数

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

TOP

返回列表