Я хотел бы создать папку для каждой строки в моем текстовом файле, например, «[023] Текст в 23-й строке файла».
Я использую код ниже, но он говорит, что синтаксис неверный. Разделив его на части и используя комментарии, я смог увидеть, что это if
также проблема, но я не смог ее решить.
@echo off
chcp 1252>nul
SETLOCAL DisableDelayedExpansion
set Nbres=0
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ fnID_fr.txt"`) do (
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
if %Nbres% leq 10
goto :set10
if %Nbres% leq 100
goto :set100
goto :set0
:set100
set DIGITS=0
goto :set0
:set10
set DIGITS=00
:set0
if not exist "!Nbres! !var!" mkdir "!Nbres! !var!"
set Nbres=%Nbres%+1
)
chcp %cp%>nul
pause
Вот пример того, что я хотел бы иметь... Я хотел бы иметь только заголовок, вместо того, чтобы писать каждую цифру в каждой строке...
решение1
Чтобы создать папку в каталоге для каждой строки текстового файла, вам понадобится следующее:
@echo off
set "txt=C:\Your\Text\File.txt"
set "dir=C:\Directory\Where\You\Want\Your\Folders\Made"
setlocal enabledelayedexpansion
for /f "delims=" %%A in (%txt%) do (
set /A count+=1
set "long=00!count!"
set "new=[!long:~-3!]"
if not exist "%dir%\!new! %%A" md "%dir%\!new! %%A"
)
pause
Вам не обязательно иметь переменные, но я считаю, что это упрощает написание такого рода вещей. for
пройдётся по вашему текстовому файлу и назначит текст строки параметру %%A
и добавит к переменной число count
. Он устанавливает переменную с именем long
as count
с двумя нулями перед ней, чтобы соответствовать вашей схеме именования (вы можете добавить больше нулей, если у вас больше 999 строк в текстовом файле), затем он устанавливает переменную с именем new
as последние три символа long
(отсюда и !long:~-3!
). Наконец, он проверяет, есть ли уже папка для вашей строки, и если её нет, он создаёт эту папку с %dir%\!new! %%A
. Напишите мне, если у вас есть какие-либо вопросы; возможно, был более быстрый способ добраться туда, чем я предложил, но это позволяет вам изменить пару вещей по пути туда.