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