首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOS批量重命名文件

DOS批量重命名文件
EN

Stack Overflow用户
提问于 2012-11-07 01:47:38
回答 2查看 2.1K关注 0票数 1

我有一个很大的文件名结构化string_int_int_int_string.extension的集合,并想批量重命名与左0填充到7位数字的第二个整数。

我看过一些有用的帖子hereherehere,但还没有完全做到。

以下是我到目前为止所拥有的(当然是不起作用的):

代码语言:javascript
复制
dir /b *.* >temp.txt

for /f "tokens=%%1,%%2,%%3,%%4,%%5 delims=_" %x in (temp.txt) do (
    setlocal enabledelayedexpansion
    set PAD=000000%%k
    set PAD=!PAD:~7!
    ren "%%i_%%j_%%k_%%l_%%m" %%i_%%j_%PAD%_%%l_%%m
)

我特别希望使用批处理文件,而不是其他语言或工具。(我知道市面上有各种重命名工具。)

任何帮助都是非常欢迎的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-07 03:20:14

代码语言:javascript
复制
setlocal EnableDelayedExpansion
dir /b *.* >temp.txt
for /F "tokens=1-5 delims=_" %%a in (temp.txt) do (
   set PAD=000000%%c
   set PAD=!PAD:~-7!
   ren "%%a_%%b_%%c_%%d_%%e"  "%%a_%%b_!PAD!_%%d_%%e"
)
票数 2
EN

Stack Overflow用户

发布于 2012-11-07 08:53:36

我使用FINDSTR过滤掉与指定模式不匹配的文件名。总共需要4个令牌-前3个,然后是文件名的其余部分。

代码语言:javascript
复制
@echo off
setlocal disableDelayedExpansion
for /f "tokens=1,2,3* delims=_" %%A in (
  'dir /b /a-d * ^|findstr /r "^[^_]*_[0-9]*_[0-9]*_[0-9]*_[^_]"'
) do (
  set "mid=%%C"
  set "pad=0000000%%C"
  set "start=%%A_%%B"
  set "end=%%D"
  setlocal enableDelayedExpansion
  echo ren "!start!_!mid!_!end!" "!start!_!pad:~-7!_!end!"
  endlocal
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13256477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档