
标题: [文件操作] [已解决]修改文件名的批处理代码如何操作子文件夹? [打印本页]
作者: max_savager 时间: 2013-1-9 15:30 标题: [已解决]修改文件名的批处理代码如何操作子文件夹?
原代码只能修改当前文件夹内的文件名,不能操作子文件夹的:- for %%a in *.txt) do (
- set "temp=%%a"
- set temp=!temp:s s=aaa!
- ren "%%a" "!temp!"
- )
- pause
复制代码
如果想连同修改子文件夹的文件名该怎么修改,谢谢!
作者: hb_135 时间: 2013-1-9 15:44
结合dir就可以- for /f %%a in ('dir /b /s *.txt') do (
- set "temp=%%a"
- set temp=!temp:s s=aaa!
- ren "%%a" "!temp!"
- )
- 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
- @echo off&setlocal enabledelayedexpansion
- for /r %%a in ("*s s*.txt") do (
- set "temp=%%~na"
- set temp=!temp:s s=aaa!
- ren "%%~fa" "!temp!"%%~xa
- )
- pause
复制代码
作者: apang 时间: 2013-1-9 16:35
变量延迟
文件名带空格,for /f 要加"delims="- @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
复制代码
作者: 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://bathome.net./) |
Powered by Discuz! 7.2 |