批处理如何从目录中读取文件夹名称的一部分

时间:2016-05-24 09:51:29

标签: file batch-file directory

上午,

我想从目录中读取所有文件夹名称,然后将此名称的一部分提取到文本文件中。

E.g。

Folder \ users \ music包含以下文件夹: Tes125559-blah345534 tes125558-blah235235

我想提取3个字符,直到 - ,所以对于Tes125559-blah345534我只需将125559放入文本文件。

它总是3个字符,然后需要抓取

的6位数字值

非常感谢任何帮助,到目前为止我只阅读目录:

dir / b> file.txt的

1 个答案:

答案 0 :(得分:1)

以下内容应该可以解决问题:

@echo off
        setlocal enabledelayedexpansion
        if exist file.txt del file.txt
        for /d %%a in (*) do (
                set DIR=%%a
                echo !DIR:~3,6!>>file.txt
        )

for循环遍历所有目录(在当前目录中)。对于每一个,它将目录名称存储在DIR中,然后使用"子字符串"从第四个开始提取六个字符的语法(3是因为它从零开始计算 - 有关详细信息,请参阅SET /?。)

在此构造周围使用!(以及脚本顶部的enabledelayedexpansion)是因为引用环境变量(使用%)的常规方式不会重新每次围绕%DIR%循环评估for的值(有关详情,请参阅cmd /?)。

因为每个目录都附加到file.txt,我们会在开始之前将其删除(如果存在)。