标题: [文件操作] 批处理怎样批量在指定文件夹内添加前缀到全文件(代码修改)? [打印本页]
作者: comicguests 时间: 2011-8-23 11:47 标题: 批处理怎样批量在指定文件夹内添加前缀到全文件(代码修改)?
- set Choice=
- echo 请将要加前缀文件夹直接拖入本窗口:
- echo.
- set /p Choice=
- if ""%Choice%"" == "" goto 2
- set/p k=要添加的前缀为:
- if "%k%" == "ml" (goto ml)
- for /f "delims=" %%i in ('dir /s /b "%choice%"') do ren %%i %k%%%i
复制代码
上面是代码的一部分,可以运行但文件夹内的文件名并没有改变...
还应该做什么修改吗?
作者: Hello123World 时间: 2011-8-23 13:30
- @echo off&SetLocal EnableDelayedExpansion
- Set /p str=请输入要添加的前缀:
- for /r %%i in (*.*) do ren "%%i" "%str%%%~nxi"
- pause>nul
复制代码
作者: zaixinxiangnian 时间: 2011-8-23 18:24
回复 2# Hello123World
Hello123World 你这个可以,但我在试的时候把全部文件名改了,想要去掉那个前缀怎么搞啊
作者: hfg1977 时间: 2011-8-23 18:32
回复 3# zaixinxiangnian
看你的问题真让人无语,
没点自学能力,没点吃苦精神就不要学bat.
作者: Hello123World 时间: 2011-8-23 18:54
回复 3# zaixinxiangnian
我给你点提示,用set 来替换。(以后做实验不要用有用的文件做,创建些文件没用的文件……)
作者: zaixinxiangnian 时间: 2011-8-23 20:12
回复 5# Hello123World
谢谢你的提醒,我已经想到用SET截取了
不过还有两个疑问
1.for /r 也可用delims token 这些/F中的参数吗?
2.加了环境变量延迟。为什么后面的(%STR%)不用双感叹号括起来啊?
作者: comicguests 时间: 2011-8-23 20:15
回复 2# Hello123World - @echo off&SetLocal EnableDelayedExpansion
- set Choice=
- echo 请将要加前缀文件夹直接拖入本窗口,然后回车:
- echo.
- set /p Choice=
- Set /p str=请输入要添加的前缀:
- for /r %%i in (*.*) do ren "%%i" "%str%%%~nxi"
- pause>nul
复制代码
我将代码改成了上面的样子,但它不能处理别的文件夹(其他分区)的文件,该怎么改呢?
作者: comicguests 时间: 2011-8-23 20:19
回复 3# zaixinxiangnian - for /f "delims=" %%1 in ('dir /s /a /b') do (set wind=%%~nx1
- ren "%%~1" "!wind:你的前缀=!")
复制代码
这个也可以吧~~
作者: ArdentMan 时间: 2011-8-23 20:20
回复 7# comicguests
请问楼主你的Choice变量是设置来做什么用的,后面居然可以不用到
作者: comicguests 时间: 2011-8-23 20:45
回复 9# ArdentMan
???
那个不就是弹出批处理窗口后,需要你将要处理的文件夹拖入的意思吗?
作者: zaixinxiangnian 时间: 2011-8-23 22:33
回复 8# comicguests
你这个试了不行啊
作者: zaixinxiangnian 时间: 2011-8-23 22:39
回复 5# Hello123World
小弟不才,,,,,写了好久也没有成功,,,写到这里下面怎么试都不行,,,,请指教- @echo off&SetLocal EnableDelayedExpansion
- for /r %%i in (*.*) do set val=%%~nxi&echo !val!
- pause>nul
复制代码
作者: zaixinxiangnian 时间: 2011-8-27 13:49
回复 2# Hello123World
Hello123World 看到了再帮忙写下吧,,,批量把前缀去掉,真的想了也写了试了都没有成功?
作者: Hello123World 时间: 2011-8-27 15:16
回复 13# zaixinxiangnian - @echo off&SetLocal EnableDelayedExpansion
- Set /p str=请输入要去除的前缀:
- for /r %%i in (*.*) do (
- Set nstr="%%~ni"
- Set nstr=!nstr:%str%=!
- ren "%%i" "!nstr!%%~xi"
- )
- pause>nul
复制代码
还是先学点基础知识吧,水到渠成!
作者: zaixinxiangnian 时间: 2011-8-27 16:22
回复 14# Hello123World
谢谢,谨听你的建议(为这个问题卡住了 试了好久都不行。是FOR的嵌套还不会用吧?)
你那个好像 文件名有空格的就不能处理了
作者: Hello123World 时间: 2011-8-27 17:41
回复 15# zaixinxiangnian - @echo off&SetLocal EnableDelayedExpansion
- Set /p str=请输入要去除的前缀:
- for /r %%i in (*.*) do (
- Set nstr="%%~ni"
- Set nstr="!nstr:%str%=!"
- ren "%%i" "!nstr!%%~xi"
- )
- pause>nul
复制代码
"!nstr:%str%=!"
这里加引号既可以了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |