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

[文件操作] [已解决]修改文件名的批处理代码如何操作子文件夹?

[复制链接]
发表于 2013-1-9 15:30:58 | 显示全部楼层 |阅读模式
原代码只能修改当前文件夹内的文件名,不能操作子文件夹的:
  1. for %%a in *.txt) do (
  2. set "temp=%%a"
  3. set temp=!temp:s s=aaa!
  4. ren "%%a" "!temp!"
  5. )
  6. pause
复制代码
如果想连同修改子文件夹的文件名该怎么修改,谢谢!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-1-9 15:44:32 | 显示全部楼层
结合dir就可以

  1. for /f %%a in ('dir /b /s *.txt')  do (
  2. set "temp=%%a"
  3. set temp=!temp:s s=aaa!
  4. ren "%%a" "!temp!"
  5. )
  6. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-1-9 15:51:12 | 显示全部楼层
回复 2# hb_135
之前我也这样改过是不行的
会出现 这样效果
发表于 2013-1-9 16:13:11 | 显示全部楼层
回复 3# max_savager
你可以把执行信息打印出来,可以具体看是哪个环节出错了
我测试了下是可以的
 楼主| 发表于 2013-1-9 16:21:48 | 显示全部楼层
回复 4# hb_135 请问下怎样打印的?
发表于 2013-1-9 16:26:13 | 显示全部楼层
回复 5# max_savager

@echo on
我看你的截图估计是把回显关掉了(@echo off)
打开回显,这样可以看每个步骤执行的输出,检查下是否变量赋值不正确
 楼主| 发表于 2013-1-9 16:26:29 | 显示全部楼层
回复 4# hb_135
结果是这样?是因为文件名中间有空格吗?
发表于 2013-1-9 16:30:25 | 显示全部楼层
回复 7# max_savager
ren 命令后面 第一个参数的路径存在吗? 第二个参数赋值没成功
发表于 2013-1-9 16:34:43 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in ("*s s*.txt") do (
  3.     set "temp=%%~na"
  4.     set temp=!temp:s s=aaa!
  5.     ren "%%~fa" "!temp!"%%~xa
  6. )
  7. pause
复制代码
发表于 2013-1-9 16:35:51 | 显示全部楼层
变量延迟
文件名带空格,for /f 要加"delims="
  1. @echo off
  2. for /f "delims=" %%a in ('dir /a-d/b/s *.txt')  do (
  3.   set "temp=%%a"
  4.   set "Name=%%~nxa"
  5.   setlocal enabledelayedexpansion
  6.   set "Name=!Name:s s=aaa!"
  7.   ren "!temp!" "!Name!"
  8.   endlocal
  9. )
  10. pause
复制代码
 楼主| 发表于 2013-1-9 16:55:13 | 显示全部楼层
回复 10# apang
谢谢,可以了
 楼主| 发表于 2013-1-9 16:55:32 | 显示全部楼层
回复 9# wwdx
谢谢,可以了
 楼主| 发表于 2013-1-9 17:03:45 | 显示全部楼层
回复 8# hb_135
谢谢,已解决
发表于 2013-1-14 18:28:45 | 显示全部楼层
谢谢分享
 楼主| 发表于 2013-1-20 11:38:17 | 显示全部楼层
本帖最后由 max_savager 于 2013-1-20 11:40 编辑
@echo off
for /f "delims=" %%a in ('dir /a-d/b/s *.txt')  do (
  set "temp=%%a"
  set "Name=%%~nxa"
  setlocal enabledelayedexpansion
  set "Name=!Name:s s=aaa!"
  ren "!temp!" "!Name!"
  endlocal
)
pause
回复 10# apang
大侠,现在改文件名一边中文一边英文就不行了,例如  “天下 sss=aaa"  就执行不了,这样的话又该怎么修改呢?请指教。盼回音
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 08:51 , Processed in 0.024915 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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