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

[文件操作] 批处理怎样批量在指定文件夹内添加前缀到全文件(代码修改)?

[复制链接]
发表于 2011-8-23 11:47:27 | 显示全部楼层 |阅读模式
  1. set Choice=
  2. echo         请将要加前缀文件夹直接拖入本窗口:
  3. echo.
  4. set /p Choice=
  5. if ""%Choice%"" == "" goto 2
  6. set/p k=要添加的前缀为:
  7. if "%k%" == "ml" (goto ml)
  8. for /f "delims=" %%i in ('dir /s /b "%choice%"') do ren %%i  %k%%%i
复制代码
上面是代码的一部分,可以运行但文件夹内的文件名并没有改变...
还应该做什么修改吗?
发表于 2011-8-23 13:30:49 | 显示全部楼层
  1. @echo off&SetLocal EnableDelayedExpansion
  2. Set /p str=请输入要添加的前缀:
  3. for /r %%i in (*.*) do ren "%%i" "%str%%%~nxi"
  4. pause>nul
复制代码
发表于 2011-8-23 18:24:49 | 显示全部楼层
回复 2# Hello123World

Hello123World  你这个可以,但我在试的时候把全部文件名改了,想要去掉那个前缀怎么搞啊
发表于 2011-8-23 18:32:55 | 显示全部楼层
回复 3# zaixinxiangnian
看你的问题真让人无语,
没点自学能力,没点吃苦精神就不要学bat.
发表于 2011-8-23 18:54:00 | 显示全部楼层
回复 3# zaixinxiangnian


    我给你点提示,用set 来替换。(以后做实验不要用有用的文件做,创建些文件没用的文件……)
发表于 2011-8-23 20:12:34 | 显示全部楼层
回复 5# Hello123World


    谢谢你的提醒,我已经想到用SET截取了

不过还有两个疑问
1.for /r 也可用delims  token  这些/F中的参数吗?
2.加了环境变量延迟。为什么后面的(%STR%)不用双感叹号括起来啊?
 楼主| 发表于 2011-8-23 20:15:08 | 显示全部楼层
回复 2# Hello123World
  1. @echo off&SetLocal EnableDelayedExpansion
  2. set Choice=
  3. echo         请将要加前缀文件夹直接拖入本窗口,然后回车:
  4. echo.
  5. set /p Choice=
  6. Set /p str=请输入要添加的前缀:
  7. for /r %%i in (*.*) do ren "%%i" "%str%%%~nxi"
  8. pause>nul
复制代码
我将代码改成了上面的样子,但它不能处理别的文件夹(其他分区)的文件,该怎么改呢?
 楼主| 发表于 2011-8-23 20:19:47 | 显示全部楼层
回复 3# zaixinxiangnian
  1. for /f "delims=" %%1 in ('dir /s /a /b') do (set wind=%%~nx1
  2. ren "%%~1" "!wind:你的前缀=!")
复制代码
这个也可以吧~~
发表于 2011-8-23 20:20:45 | 显示全部楼层
回复 7# comicguests
请问楼主你的Choice变量是设置来做什么用的,后面居然可以不用到
 楼主| 发表于 2011-8-23 20:45:38 | 显示全部楼层
回复 9# ArdentMan

???
那个不就是弹出批处理窗口后,需要你将要处理的文件夹拖入的意思吗?
发表于 2011-8-23 22:33:06 | 显示全部楼层
回复 8# comicguests


    你这个试了不行啊
发表于 2011-8-23 22:39:06 | 显示全部楼层
回复 5# Hello123World


    小弟不才,,,,,写了好久也没有成功,,,写到这里下面怎么试都不行,,,,请指教
  1. @echo off&SetLocal EnableDelayedExpansion
  2. for /r %%i in (*.*) do set val=%%~nxi&echo !val!
  3. pause>nul
复制代码
发表于 2011-8-27 13:49:15 | 显示全部楼层
回复 2# Hello123World

Hello123World  看到了再帮忙写下吧,,,批量把前缀去掉,真的想了也写了试了都没有成功?
发表于 2011-8-27 15:16:40 | 显示全部楼层
回复 13# zaixinxiangnian
  1. @echo off&SetLocal EnableDelayedExpansion
  2. Set /p str=请输入要去除的前缀:
  3. for /r %%i in (*.*) do (
  4.         Set nstr="%%~ni"
  5.         Set nstr=!nstr:%str%=!
  6.         ren "%%i" "!nstr!%%~xi"
  7.         )
  8. pause>nul
复制代码
还是先学点基础知识吧,水到渠成!
发表于 2011-8-27 16:22:19 | 显示全部楼层
回复 14# Hello123World


    谢谢,谨听你的建议(为这个问题卡住了 试了好久都不行。是FOR的嵌套还不会用吧?)

你那个好像 文件名有空格的就不能处理了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 23:54 , Processed in 0.018848 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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