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
、変数に数値を追加します。 は、命名規則に合うように先頭に 2 つのゼロが付いたというcount
変数を設定し(テキスト ファイルの行数が 999 を超える場合は、ゼロをさらに追加できます)、の最後の 3 文字(したがって) が付いた という変数を設定します。最後に、行のフォルダーが既に存在するかどうかを確認し、存在しない場合は でフォルダーを作成します。質問があればお知らせください。私が提案した方法よりも早くそこにたどり着く方法があったかもしれませんが、これにより、そこに行く途中でいくつかの変更を行うことができます。long
count
new
long
!long:~-3!
%dir%\!new! %%A