批量为主目录中的每个文件创建子目录

批量为主目录中的每个文件创建子目录

我有一个批处理文件,它循环遍历一个文件夹,向文件夹中的每个 CSV 插入一行文本,并生成一个计算每个文件行数的文件。

我还想在主文件夹中为每个 CSV 文件生成一个子目录,但不包含“.csv”扩展名。下面的代码似乎应该可以工作(当我将三行分离到它们自己的 bat 文件中时,它可以工作!)但在循环中,它在循环的每次迭代中都返回相同的文件夹名称值。如何使 dirname 变量使用当前值更新?

copy NUL count.txt
for %%f in (*.csv) do (
    setlocal EnableDelayedExpansion
    set "cmd=findstr /R /N "^^" %%f | find /C ":""

        for /f %%a in ('!cmd!') do set number=%%a
        echo %%f   !number!>>count.txt

        SET filename=%%f
        SET dirname=%filename:~0,13%
        mkdir %dirname%

    type header.txt >%%f.new
    type %%f >>%%f.new
    move /y %%f.new %%f
 )

答案1

在循环中,每次循环迭代都会返回文件夹名称的相同值

SET dirname=%filename:~0,13%

您需要使用延迟扩展,就像对数字所做的那样:

SET dirname=!filename:~0,13!

相关内容