在模板 bat 文件之后命名文件 - 使用 CMD 代码

问题描述

我在多个文件夹中有一个 *.bat 文件,它重命名了某些文件,因此文件名中包含项目编号、项目名称和首字母缩写。到目前为止,运行该文件将要求用户输入项目编号、项目名称和保存为变量的首字母(no、project 和首字母)。保留每个原始文件名,但括号中将是所需的项目特定数据)。到目前为止它有效,但我想要的是设置一个批处理文件,其中名称为项目特定数据设置模板,例如 bat 文件文件名可能是: 重命名 (Projectname),XYZ.bat 如果在 CMD 代码中,您可以检索可执行 bat 文件文件名(文件夹中应该只有 1 个),然后使用分隔符将文件名拼接起来并将相关字符串存储在不同的变量中,例如里面的东西是变量“no”,里面的东西()是变量“project”,过去的东西是“initial”强>”。如果我有这些变量,文件重命名就像在我当前的过程中一样。请帮忙,因为我不熟悉 CMD 代码或 Powershell(这可能是替代选项),并且我花了很长时间来组装现有代码。基本上我想将输入部分(请参阅 set /p)更改为以下内容

谢谢。

现有代码如下:

cls
    echo off

    pushd "%~p0" 2> nul
    pushd "\\%~p0" 2> nul
    
    echo


attrib -r *.* /s

set /p no= Enter Project Reference in style XY00.000:
set /p project= Enter Project name (without any underscores):
set /p initial= Enter your Initials:


for /f "tokens=1* delims=(" %%i in ('dir /b *.xlsm') do ren "%%i(%%j" "%%i(%no% %project%_%initial%).xlsm"
for /f "tokens=1,2* delims=()" %%i in ('dir /b *.docm') do ren "%%i(%%j)%%k" "%%i(%no% %project%_%initial%)%%k"

解决方法

我将用户输入替换为:

set infovariable=%~n0

将 bat 文件的文件名安全地作为变量,并在以后使用它来重命名适当的文件。 bat 文件的名称正是我想要的文本。大功告成!