我需要一个批处理文件,根据文件夹名称重命名我的文件。
例如我有这个文件夹:
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的第一个字符的位置。 有什么建议吗?
答案 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%!"
)