Board logo

标题: [文件操作] [已解决]修改文件名的批处理代码如何操作子文件夹? [打印本页]

作者: max_savager    时间: 2013-1-9 15:30     标题: [已解决]修改文件名的批处理代码如何操作子文件夹?

原代码只能修改当前文件夹内的文件名,不能操作子文件夹的:
  1. for %%a in *.txt) do (
  2. set "temp=%%a"
  3. set temp=!temp:s s=aaa!
  4. ren "%%a" "!temp!"
  5. )
  6. pause
复制代码
如果想连同修改子文件夹的文件名该怎么修改,谢谢!
作者: hb_135    时间: 2013-1-9 15:44

结合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
复制代码

作者: max_savager    时间: 2013-1-9 15:51

回复 2# hb_135
之前我也这样改过是不行的
会出现 这样效果[attach]6028[/attach]
作者: hb_135    时间: 2013-1-9 16:13

回复 3# max_savager
你可以把执行信息打印出来,可以具体看是哪个环节出错了
我测试了下是可以的
作者: max_savager    时间: 2013-1-9 16:21

回复 4# hb_135 请问下怎样打印的?
作者: hb_135    时间: 2013-1-9 16:26

回复 5# max_savager

@echo on
我看你的截图估计是把回显关掉了(@echo off)
打开回显,这样可以看每个步骤执行的输出,检查下是否变量赋值不正确
作者: max_savager    时间: 2013-1-9 16:26

回复 4# hb_135
结果是这样?是因为文件名中间有空格吗?
作者: hb_135    时间: 2013-1-9 16:30

回复 7# max_savager
ren 命令后面 第一个参数的路径存在吗? 第二个参数赋值没成功
作者: wwdx    时间: 2013-1-9 16:34

  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
复制代码

作者: apang    时间: 2013-1-9 16:35

变量延迟
文件名带空格,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
复制代码

作者: max_savager    时间: 2013-1-9 16:55

回复 10# apang
谢谢,可以了
作者: max_savager    时间: 2013-1-9 16:55

回复 9# wwdx
谢谢,可以了
作者: max_savager    时间: 2013-1-9 17:03

回复 8# hb_135
谢谢,已解决
作者: 小河都江堰    时间: 2013-1-14 18:28

谢谢分享
作者: max_savager    时间: 2013-1-20 11:38

本帖最后由 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"  就执行不了,这样的话又该怎么修改呢?请指教。盼回音
作者: tangqingfu    时间: 2013-6-20 10:19

谢谢分享,学习ing……




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2