Windows 批处理脚本:从搜索结果列表中选择一个项目

Windows 批处理脚本:从搜索结果列表中选择一个项目

目标:我想在单个文件夹中搜索特定类型的文件。按特定文件名模式(例如“文件”)进行过滤,并按文件名排序,结果将如下所示:

file101.txt
file212.txt
file432.txt

现在,我只想选择最后一项(此处file432.txt:)并对该文件执行进一步的操作(例如复制和重命名)。

我该如何做呢?

到目前为止我得到的信息如下:

@echo off
setlocal
set list=
for /r . %%g in (file*.txt) do echo %%g

.. 这给了我问题顶部显示的列表。

据我所知,没有真正的列表 - 它只是一个带有回车符/换行符的字符串。因此,我无法真正选择特定的搜索结果项。我本来可以使用另一个for循环,但除了 EOF 之外,我不知道具体要过滤哪种模式。我唯一的想法是删除所有换行符并将结果保存在变量中。现在,找到的每一行新行都会覆盖前一行。

我该如何做呢?

set lastitem=for %%g in (%list%) do REMOVE_NEWLINE and echo %%g

答案1

我只想选择最后一项

(此处:file432.txt)并对该文件执行进一步的操作(例如复制和重命名)。

使用以下批处理文件。

测试.cmd:

@echo off 
setlocal
for /r . %%g in (file*.txt) do (
  set _lastitem=%%g
  )
echo do something to the last file in the list, which is %_lastitem%
endlocal

示例输出:

F:\test>dir file*.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

22/08/2016  18:17                 0 file101.txt
22/08/2016  18:17                 0 file212.txt
22/08/2016  18:17                 0 file432.txt
               3 File(s)              0 bytes
               0 Dir(s)  1,765,302,566,912 bytes free

F:\test>test
do something to the last file in the list, which is F:\test\file432.txt

F:\test>

相关内容