Batch file 获取文件夹按名称排序时最后列出的文件夹名称-批处理文件

Batch file 获取文件夹按名称排序时最后列出的文件夹名称-批处理文件,batch-file,directory,filenames,Batch File,Directory,Filenames,如果文件夹按名称排列(即按字母顺序排列),请帮助我从最后出现的文件夹列表(包含在一个文件夹中)中获取文件夹名称 例如,如果名为“stack”的文件夹有一组名为a、b、c、d、e、f的文件夹。然后批处理文件应该返回文件夹“f”的名称 我必须在批处理文件中执行此操作您需要的批处理文件行是 for /f "delims=" %%a in ('dir /ad /on stack') do set returnvalue=%%a @for /f "tokens=1,* delims=:" %a in (

如果文件夹按名称排列(即按字母顺序排列),请帮助我从最后出现的文件夹列表(包含在一个文件夹中)中获取文件夹名称

例如,如果名为“stack”的文件夹有一组名为a、b、c、d、e、f的文件夹。然后批处理文件应该返回文件夹“f”的名称


我必须在批处理文件中执行此操作

您需要的批处理文件行是

for /f "delims=" %%a in ('dir /ad /on stack') do set returnvalue=%%a
@for /f "tokens=1,* delims=:" %a in ('dir /b/o-n^|findstr /n "^"^|findstr "^1:"') do @echo %b
然后显示返回值

echo last name in directory is %returnvalue%

也许这不是最优雅的方法。 我只是将文件夹名称按相反的顺序排序,然后取第一个项目,然后断开。这样可以避免遍历整个列表。 脚本应该将您的文件夹作为工作目录

@echo off
setlocal enabledelayedexpansion

for /F "tokens=* delims=" %%a in ('dir /AD /B /O-N') do (
    set lastvalue=%%a
    goto break
)
:break
echo !lastvalue!

下面是使用临时文件的另一种方法: I dir文件夹名称按相反顺序排序并重定向到临时文件。然后我从该文件中读取一次并设置lastvalue

(dir /AD /B /O-N >temp.txt) && 5<temp.txt ( set /p lastvalue=<&5)
echo %lastvalue%

(dir/AD/B/O-N>temp.txt)和&5只是为了添加选项。从命令行(或将
%%
更改为
%%
以在批处理文件中使用)