1

У меня есть пакетный файл, который проходит по папке, вставляя строку текста в каждый 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 ответ1

1

В цикле он возвращает одно и то же значение для имени папки на каждой итерации цикла

SET dirname=%filename:~0,13%

Вам нужно использовать отложенное расширение так же, как вы использовали для числа:

SET dirname=!filename:~0,13!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .