Windows批处理脚本:查找目录中最后一个文件夹的名称[关闭]

Posted

技术标签:

【中文标题】Windows批处理脚本:查找目录中最后一个文件夹的名称[关闭]【英文标题】:Windows Batch Script: Find the name of the last folder in the directory [closed] 【发布时间】:2021-03-21 08:51:42 【问题描述】:

我正在编写一个批处理文件,以将文件夹的内容复制到同一目录中具有新名称的文件夹中。我希望命名约定是: 2021000-Template(这是复制文件的地方) 2021001-A公司 2021002-公司B 等等

我正在提示输入公司名称,但卡在最后一部分。

如何找到目录中最后一个文件夹的名称,将202100x存入一个变量并加1?

之后我需要将新变量包含在带有 cname 的字符串中,但我想我可以解决这个问题。

感谢您的帮助!

@echo off
:: CD to correct folder and year in the root
CD\Estimates\2021 

:: Asks for user input on company name and stores it in the cname var
Set /P "cname= Enter Company Name (without spaces): "

:: Copying the entire contents of the Template folder to a new folder named the cname
XCOPY C:\Estimates\2021\2021000-Template C:\Estimates\2021\%cname% /S /I

:: Opens the new folder
start C:\Estimates\2021\%cname%

【问题讨论】:

【参考方案1】:
for /f "delims=-" %%a in ('dir /b /ad /on C:\Estimates\2021\2021*-*') do set /a last=%%a+1
echo next subdirectory to be created is "%last% - %cname%"

应该做这项工作,假设没有以 2021 开头并且名称中有 - 的子目录名称不符合您的模式。

dir 命令以名称顺序 (/on) 生成与模式“2021something-somethingelse”匹配的目录 (/ad) 的基本形式(仅名称)列表。 tokens=1(这是隐式的)依次选择每个目录名中的第一个标记,由- 分隔,因此%%a 将被分配2021000 2021001 2021002 等等 - 按此顺序. set /a 将数字加 1,因此序列中的下一个数字也是如此。这样,当for 循环结束时,即使号码因某种原因被删除,也会选择下一个可用号码。

【讨论】:

以上是关于Windows批处理脚本:查找目录中最后一个文件夹的名称[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Windows批处理脚本在子文件夹中查找最大的PDF文件并使用Ghostscript和`pdftk`在页脚中打印路径

如何查找上周日的日期并将其保存在Windows批处理文件的变量中

在 Windows 批处理脚本的 for 循环中未通过“查找”命令获得所需的输出

windows的bat脚本

BAT自动批处理写一个脚本查找指定软件安装目录并启动软件

如何在 Windows 批处理文件中使用 7zip 从 ZIP 存档中提取最后一个目录?