Board logo

标题: [文本处理] 【已解决】请教BAT批量重命名 [打印本页]

作者: 1270697389    时间: 2013-11-17 17:30     标题: 【已解决】请教BAT批量重命名

本帖最后由 1270697389 于 2013-11-18 09:23 编辑

需要把:
0001_ffff.txt
0002_swrt.txt
ttsffg_swws.txt
等等……
改为把_后面的去掉
0001.txt
0002.txt
ttsffg.txt
谢谢!
我用的这个改_前面的行,_后面的不行
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. for /f "delims=" %%a in ('dir /b /a *.txt') do (
  4.         set file=%%a
  5.         set file=!file:_*=!
  6.          echo %%a --^> !file! >>Recovery.dic
  7.         
  8.         rename "%%a" "!file!"
  9. )
  10. pause
复制代码

作者: foxJL    时间: 2013-11-17 19:16

  1. @echo off
  2. for /f "tokens=1* delims=_" %%i in ('dir /b /a-d *_*.txt') do (ren,"%%i_%%j" %%i.txt)
  3. pause
复制代码

作者: 1270697389    时间: 2013-11-18 08:19

本帖最后由 1270697389 于 2013-11-18 08:37 编辑
foxJL 发表于 2013-11-17 19:16



    假如aaa_bbb-ccc.txt这种文件名改为bbb.txt该怎么写?不是单个,是批量。
谢谢!
作者: DAIC    时间: 2013-11-18 08:53

回复 3# 1270697389
  1. @echo off
  2. for /f "tokens=1-3 delims=_-" %%i in ('dir /b /a-d *_*-*.txt') do (
  3.     ren "%%i_%%j-%%k" "%%j.txt"
  4. )
复制代码

作者: 1270697389    时间: 2013-11-18 09:22

非常感谢两位老师!谢谢
作者: zhanglei1371    时间: 2013-11-18 17:17

可否解释下为何set file=!file:_*=!替换_到末尾的不行?谢谢
作者: foxJL    时间: 2013-11-18 17:42

回复 6# zhanglei1371

微软的设定就是这样的,无法解释,就像set/a不支持浮点运算一样,虽然我们也很想
看看set/?的帮助文档是怎样写的

环境变量替换已如下增强:

    %PATH:str1=str2%

会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。





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