我想在我的批处理文件中创建一个变量,该变量包含我的共享文件夹中“最新”文件夹的路径。
该共享文件夹上的每个文件夹都有一个版本号,即:“product_1.0.0.1”。
我的方法是迭代父文件夹并检查子目录的最后一个数字是最高的字符。
set latest=\\Share\prod\1.0\tools\prod_1.0.0.0
for /d %%A in ("\\Share\prod\1.0\tools") do
if %%A:~1 gtr %latest:~1%
(set latest=%%A)
这不起作用,因为它似乎没有得到最后一个字符%%A
我写这个问题时出现的另一个问题是如何处理大于9的数字?
据我所知:~1
获取最后一个字符,所以更好的方法可能是让最后一个点后面的所有内容。我该怎么做?
答案 0 :(得分:1)
您可以使用dir /ad /oe /b "\\Share\prod\1.0\tools"
。选项/ad
表示“仅列出目录(文件夹)”,选项/oe
表示“按扩展顺序”,/b
表示“裸输出”(仅列出名称)。扩展名是最后一个点之后的所有内容。然后,您可以将其放入循环中并将latest
设置为每个结果,变量将获得最后的结果。或者使用选项/o-e
(“按逆序排序”),然后在第一次迭代后退出循环:
set latest=
for /f "delims=" %%a in ('dir /ad /o-e /b "\\Share\prod\1.0\tools"') do (
set latest=%%a
goto exit1
)
:exit1
上述问题是当数字超过9时该怎么办。你可以通过命名为product_1.0.0.001,product_1.0.0.002等来解决这个问题。