Batch file 使用批处理文件从文件夹名称中删除单个编号

Batch file 使用批处理文件从文件夹名称中删除单个编号,batch-file,Batch File,在工作中,我们使用一个定制的程序来搜索目录树,并找到一个单独的图像文件。这些文件存储在以“18”开头的7位名称的文件夹中,例如“1873456”、“1873457”,“1873458”等。我遇到的问题是,去年某个时候,创建这些文件夹并填充其中图像的过程达到了“1899999”-然后滚动到“18100000”,并在捕获和更正之前对4000多个文件夹进行了类似操作。 我们使用的定制程序只能处理七位数的文件夹名称。我想做的是创建一个批处理文件,通过删除名称中额外的“1”来重命名所有八位文件夹,因此“1

在工作中,我们使用一个定制的程序来搜索目录树,并找到一个单独的图像文件。这些文件存储在以“18”开头的7位名称的文件夹中,例如“1873456”、“1873457”,“1873458”等。我遇到的问题是,去年某个时候,创建这些文件夹并填充其中图像的过程达到了“1899999”-然后滚动到“18100000”,并在捕获和更正之前对4000多个文件夹进行了类似操作。 我们使用的定制程序只能处理七位数的文件夹名称。我想做的是创建一个批处理文件,通过删除名称中额外的“1”来重命名所有八位文件夹,因此“18100000”变为“1800000”,依此类推,直到“18104013”变为“1804013”

有人能帮忙吗?

类似的

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

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

将创建一个名为
renfile.bat.txt
的文件,其中包含与文件规范匹配的文件夹的重命名命令。在记事本中检查它是否正常,然后将其重命名为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!"
)

旧的18nnn文件夹是否仍然存在?要将18100000重命名为1800000,后者不应存在。如果它存在,必须做什么?@MC ND如果你指的是'1800000'到'1899999'的旧版本,它们在不同的文件夹中。移动它们是为了存档它们并在我们的服务器上节省硬盘空间,所以这不会是一个问题。这样,如果没有延迟的expasnion,它们将无法工作。这也不会在目录树上运行。谢谢你,Foxi,这几乎像一个魅力。但是,它会在目录中运行,并为每个文件夹创建一个重命名命令;但是删除我不需要的行并运行其余的行是一件简单的事情。如果将folderspec中的
18?
更改为
181
,则它可能会更好地针对文件夹。
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!"
)