找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25022|回复: 3

[文件操作] 批量修改文件名的批处理求解释

[复制链接]
发表于 2014-12-13 13:10:01 | 显示全部楼层 |阅读模式
a.txt 中的内容是
123 abc
234 bcd

pause
  1. @echo off

  2. for /f "tokens=1,2" %%i in (a.txt) do (

  3. for /f "delims=_ tokens=1,2" %%p in ('dir /a-d /b *.bmp *.csv') do (

  4. if "%%p" == "%%i" ren %%i_%%q %%j_%%q

  5. )

  6. )

  7. pause
复制代码
这个这个批量修改文件名称的代码。但是其中的几个地方我不是很明白,求大神的解释。

《1》    "tokens=1,2“这个不是把a.txt中的内容都显示吗?为什么只显示123,234?
《2》   %%q 和%%j是什么啊?哪里来的变量啊?
发表于 2014-12-13 15:57:54 | 显示全部楼层
《1》这里 %%i 是123 234 %%j 是 abc bcd
《2》 如果文件名包含_ %%p 就是是文件名里 _ 前面的 _后面就是 %%q
发表于 2014-12-13 17:10:41 | 显示全部楼层
1,本来是要显示所有的内容,tokens=1,2要求它后面必须有两个变量来对应
    如for /f "tokens=1,2" %%i in (a.txt) do echo %%b %%c     %%ib,%%c和前面的1 2要对应,
   如果你只用一个变量echo %%a,那么只显示第一列内容
2,%%q %%j都是从for后面的变量按照字母表顺序开始排列的
 楼主| 发表于 2014-12-14 09:49:38 | 显示全部楼层
回复 3# c755731262


    非常感谢。明白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 04:55 , Processed in 0.018676 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表