【问题标题】:Create a batch file to rename some files创建一个批处理文件来重命名一些文件
【发布时间】:2017-02-22 06:49:21
【问题描述】:

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

例如我有这个文件夹:

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 的第一个字符的位置。 有什么建议吗?

【问题讨论】:

  • 哇,你真有趣!
  • 我只是想说明您的问题有多“具体”;请阅读帮助主题How do I ask a good question?
  • 你只是想骗我。你不明白2行的问题吗?不要回答。否决我的目的是什么?你可以写“你能说得具体一点吗?”晚安先生,感谢您的贡献
  • 请注意stackoverflow.com 不是免费的脚本/代码编写服务。如果您告诉我们到目前为止您已经尝试过什么(包括您已经在使用的脚本/代码)以及您遇到的问题,那么我们可以尝试帮助解决具体问题。您还应该阅读How do I ask a good question?
  • 你提到的问题大约有 5 年的历史了,从那时起这个网站的规则发生了很大的变化。无论如何,你编辑了你的帖子并展示了你自己的努力,所以保持冷静,一切都很好......现在让我们坚持技术方面的内容:我不会从整个路径字符串中提取项目编号,而是分两步完成:1.set "projectnumber=%mypath:*IT.16.=%",2.set "projectnumber=%projectnumber:~,4%";这样路径可以是任何东西,并且仍然可以正确获取数字(只要IT.16.只出现一次)...

标签: batch-file


【解决方案1】:

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

@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%!"
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 2016-07-01
    • 2014-02-26
    相关资源
    最近更新 更多