创建批处理文件以重命名某些文件

时间:2016-10-13 08:33:25

标签: batch-file

我需要一个批处理文件,根据文件夹名称重命名我的文件。

例如我有这个文件夹:

E:\PROGET\01_Progetti\1_TRATTATIVE\IT.16.9291_Fabbricato ad Milano (MI) - Ing. Bianchi\03-CALCOLO\02-XLS\

其中包含

CB-Tech_92XX - .xls
Punz_92XX - .xls

我想将它们重命名为

CB-Tech_9291 - .xls
Punz_9291 - .xls

有可能吗?

编辑:

我发现这个代码来自一个要求代码并且没有得到任何抱怨的人Rename all files in a directory with a Windows batch script

我已经改变了一点:

@echo off
setlocal enableDelayedExpansion
for %%F in (*92XX*) do (
set "name=%%F"
ren "!name!" "!name:92XX=9XXX!"
)
@pause

现在我只需要了解如何获取路径(已完成),仅提取数字(尚未)并存储在变量(已完成)中。

设置变量应该是那样的

set "number=projectnumber"
SET mypath=%~dp0

好了,现在我已经有了这条路径,需要在IT.16之后只提取4个字符。

稍后会编辑:)

编辑2:

@echo off
setlocal enableDelayedExpansion

SET mypath=%~dp0

set projectnumber=%mypath:~41,4%


for %%F in (*92XX*) do (
  set "name=%%F"
  ren "!name!" "!name:92XX=%projectnumber:~0%!"
)


@pause

是啊!这适用于此特定文件夹!!

现在我只需要了解如何搜索和提取路径中的数字,使其更加通用。

我正在寻找一个函数来返回字符串IT.16的第一个字符的位置。 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这是这个问题的完整解决方案:

@echo off
setlocal enableDelayedExpansion

SET mypath=%~dp0  
set "projectnumber=%mypath:*IT.16.=%"
set "projectnumber=%projectnumber:~,4%"

for %%F in (*92XX*) do (
  set "name=%%F"
  ren "!name!" "!name:92XX=%projectnumber:~0%!"
)