使用批处理文件从文件夹名称中删除单个数字

时间:2014-02-28 10:46:16

标签: batch-file

在工作中,我们使用定制程序搜索目录树并查找单个图像文件。这些文件存储在具有7位数名称的文件夹中,以“18”开头 - 例如'1873456','1873457','1873458'等。我遇到的问题是去年某个时候创建​​的程序这些文件夹并填充其中的图像达到'1899999' - 然后翻到'18100000'并继续进行,超过4,000个文件夹,然后才被捕获并纠正。 我们使用的定制程序只能处理七位数的文件夹名称。我想要做的是创建一个批处理文件,通过删除名称中的额外“1”来重命名所有八位数文件夹,因此'18100000'变为'1800000',依此类推,直到'18104013'变为'1804013'。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

这样的东西
for /l %%x in (100000,1,104013) do (
    set oldsuffix=%%x
    set newsuffix=%oldsuffix:~-5%
    ren 18%%x 18%newsuffix%
)

答案 1 :(得分:0)

在基本文件夹中运行它,它不会更改任何文件夹。

将创建一个名为renfile.bat.txt的文件,其中包含与filespec匹配的文件夹的rename命令。在记事本中检查它是否正常,然后将其重命名为renfile.bat并运行它。

没有经过测试。

@echo off
setlocal enabledelayedexpansion
for /d /r %%a in (18??????) do (
   set "name=%%~nxa"
   >>renfile.bat.txt echo ren "%%a" "!name:~0,2!!name:~3!"
)

答案 2 :(得分:0)

setlocal enableextensions enabledelayedexpansion
for /d /r "c:\somewhere" %%f in (181?????) do (
    set "name=0" & set /a "name+=%%~nf" 2>nul
    if !name! gtr 1899999 ren "%%~ff" "18!name:~-5!"
)