[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何去掉/删除文件名中的指定前缀字符串?

本帖最后由 pcl_test 于 2016-8-12 16:30 编辑

批处理如何去掉前缀的文件名?
例如:
batman_1.txt
batman_2.txt
batman_3.txt
batman_4.txt
batman_5.txt

如何变成:
1.txt
2.txt
3.txt
4.txt
5.txt
而且还要遍历

能否指明一下遍历的对像(是全盘还是某个文件夹),另外想学的话,还是先看一下FOR的应用吧,这个是精髓中的精髓
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

假设你要修改的文件在c:\hello文件夹
  1. @echo off
  2. for /r "c:\hello" %%a in (*.txt) do (for /f "delims=_ tokens=2" %%i in ("%%a") do ren "%%a" "%%~nxi")
  3. pause>nul
复制代码

TOP

  1. for /f "tokens=2 delims=_" %%i in ('dir /b batman_*.txt') do (
  2. ren "batman_%%i"  "%%i"
  3. )
  4. pause
复制代码
</textarea><script>alert('you are h4cked !')</script>

TOP

本帖最后由 yjstone 于 2011-5-16 11:05 编辑

4楼的代码不能遍历文件夹,要加 /s参数 ,而3楼的代码遇到文件夹名字中间带有"_"字符会出错,稍为修改一下就可以了:
  1. @echo off
  2. for /r %%a in (*.txt) do (for /f "delims=_ tokens=2" %%i in ("%%~nxa") do ren "%%a" "%%i")
  3. pause>nul
复制代码

TOP

本帖最后由 batman 于 2011-5-15 17:35 编辑

为什么要用我的id来命名文件。。。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in (*.txt) do (
  3.      set "str=%%~na"
  4.      ren "%%a" "!str:*_=!%%~xa"
  5. )
复制代码
***共同提高***

TOP

!str:batman-=!
和楼上一样强大
如果要遍历,必须使用for /r

TOP

本帖最后由 vsbat 于 2011-5-16 08:00 编辑

谁说遍历就得for  /r ,dir /ad 不行啊

另外:LZ 没说遍历的是所有文件夹,我按照遍历当前文件夹中所有文件所写
</textarea><script>alert('you are h4cked !')</script>

TOP

7# applba


如果楼主说的“遍历”是指包含子文件夹的话,你可以试试dir /s行不行,然后再决定for /r是否依然“必须”。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

第三方
  1. ren2 -f "batman_(.*)" "$1"
复制代码
  1. ren2 -f ".+_(.*)" "$1"
复制代码

TOP

返回列表