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

[文本处理] 【已解决】请教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
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
初九的冬天

回复 6# zhanglei1371

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

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

    %PATH:str1=str2%

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

评分人数

TOP

可否解释下为何set file=!file:_*=!替换_到末尾的不行?谢谢

TOP

非常感谢两位老师!谢谢
初九的冬天

TOP

回复 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. )
复制代码
1

评分人数

TOP

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



    假如aaa_bbb-ccc.txt这种文件名改为bbb.txt该怎么写?不是单个,是批量。
谢谢!
初九的冬天

TOP

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

评分人数

TOP

返回列表