我想为我的 txt 文件中的每一行创建一个文件夹,例如“[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
变量,在它前面有两个零以适合您的命名方案(如果您的文本文件中的行超过 999,您可以添加更多零),然后它会设置一个名为的变量,最后三个字符(因此是)。最后,它会检查是否已经有您的行的文件夹,如果不存在,它会使用 来创建该文件夹。如果您有任何疑问,请告诉我;可能有比我建议的更快的方法来实现这一点,但这允许您在旅途中更改几件事。long
count
new
long
!long:~-3!
%dir%\!new! %%A