Windows批处理文件:找到最近的带空格的文件。

问题描述 投票:0回答:1

除了在有空间的情况下,这个方法可以用

for /f %%i in ('dir /b/a-d/od/t:c') do set LAST=%%i

如果有空间,有什么办法吗?

windows batch-file
1个回答
2
投票

你需要处理定界符,因为默认的定界符是...。                                TAB. 因此,我的建议是,要么全部使用代币。*或最好没有分隔符。还应注意的是,行的默认开头。EOL,是分号。;因此,一个强大的命令可以防止以该字符开头的名字也从结果中被省略。

使用所有标记,并将行首设置为一个不能作为文件或目录名中第一个字符的字符。

For /F "EOL=? Tokens=*" %%I In ('Dir /B /A:-D /O:D /T:C') Do Set "LAST=%%I"

这个方法有一个非常小但可能的问题,那就是文件名可能以一个或多个空格字符开始,由于这些是默认的定界符,它们会在返回的结果中被消耗和删除。

使用无定界符,并将行首设置为一个不能作为文件或目录名中第一个字符的字符。

For /F "EOL=| Delims=" %%I In ('Dir /B /A:-D /O:D /T:C') Do Set "LAST=%%I"

上面的代码示例将定义一个名为 LAST,加上每个文件的名称,直到所有的文件都迭代完毕。set并覆盖之前的. 如果你在,(本例中为当前),目录中有非常多的文件,你可以选择反向排序的方法。(而不是 /O:D 使用 /O:-D),定义第一个值,然后脱离循环。

For /F "EOL=| Delims=" %%I In ('Dir /B /A:-D /O:-D /T:C') Do (
    Set "LAST=%%I"
    GoTo Done
)
:Done
© www.soinside.com 2019 - 2024. All rights reserved.