【发布时间】:2021-05-09 00:36:41
【问题描述】:
我在不同的文件夹中有一个 *.bat 文件,它重命名了某些文件,因此项目编号、项目名称和首字母缩写都包含在文件名中。到目前为止,运行该文件将要求用户输入项目编号、项目名称和保存为变量的首字母(否、项目和首字母)。保留每个原始文件名,但括号中将是所需的项目特定数据)。到目前为止它可以工作,但我想要的是设置一个批处理文件,其中名称为项目特定数据设置模板,例如 bat 文件的文件名可以是:
重命名
- 获取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