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批处理文件的变量中