【问题标题】:name files after template bat file - used CMD code在模板 bat 文件后命名文件 - 使用 CMD 代码
【发布时间】:2021-05-09 00:36:41
【问题描述】:

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

  • 获取bat文件的文件名
  • 从文件名中提取 3 个文本字符串(使用 (
  • 将 3 个文本字符串存储为参数(NO、PROJECT、INITIAL)
  • 现有代码的其余部分应该可以重命名文件夹中的文件

谢谢。

现有代码如下:

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"

【问题讨论】:

  • [1] 使用Read-Host 获取用户输入。 [2] 获取带有Get-ChildItem 的文件名。 [3] 使用Rename-Item 和该文件的.BaseName 重命名当前文件以及保存的用户输入。 ///// 我将使用-f 字符串格式运算符作为最后一个。
  • 感谢您的回复。需要明确的是,原始代码可以完美运行,据我所知,您的版本也是如此。我的斗争是改变它,你不需要用户输入(打字)。这个想法是 bat 文件有一个带有分隔符的特定名称,因此代码会读出该特定文件名并将其分解为不同的部分,这些部分将作为变量进行保护,如前所述。文件的重命名已经生效。干杯。
  • 您发布的代码是 BAT/CMD 代码,而不是 powershell 代码。你真的想要powershell代码吗? ///// 如果要从文件中读取某些内容,则需要列出要执行的确切步骤。为清楚起见,请作为列表,而不是段落。我仍然不确定你真正想要什么...... [脸红]
  • 很抱歉给您带来了困惑。我想要一个可执行文件并运行一些命令以重命名位于同一文件夹中的文件。到目前为止,我拼凑在一起的 cmd 代码可以工作,但用户必须输入存储在 3 个参数(否、项目和初始)中的信息。
  • 我想使用一些自动化而不是输入。如果某些命令可以读出 bat 文件的文件名,那么可以使用此信息。该文件以您可以使用括号或逗号等分隔符来分隔文本位(项目编号、项目名称和首字母)的样式命名,并将此信息分配给 3 个参数(否、项目、首字母)。带有重命名文件的命令的其余部分应该完成它的工作。

标签: variables cmd rename filenames splice


【解决方案1】:

我将用户输入替换为:

set infovariable=%~n0

将 bat 文件的文件名作为变量保护,并在以后使用它来重命名相应的文件。 bat 文件的名称正是我想要的文本。大功告成!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 2012-06-20
    • 2012-11-28
    • 1970-01-01
    • 2018-08-28
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多