質問: バッチを使用して単一のテキストファイルを行ごとに複数のテキストファイルに分割する方法は? 私は次のプログラムを実行しています、@echo off cls set /p "filename=type file name>" setlocal enabledelayedexpansion for /r e:\ %%a in (*) do if "%%~nxa"=="%filename%" ( echo %%~dpnxa >>path.txt ) 出力ファイルがありますpath.txt を含む、e:\new.txt e:\redmi\new folder\new.txt e:\windows\new folder\new folder\new.txt 私はそれらを次のような別々のファイルに入れるのが好きです。e:\new.txt in path1.txte:\redmi\new folder\new.txt in path2.txte:\windows\new folder\new folder\new.txt in path3.txt
回答: 私はあなたのためにはるかに簡単でおそらくより速い解決策を持っています: パスリストを取得するには、dir /s /b /a-dの代わりにfor /rを使用します。これにより、ifステートメントが不要になります。 行の先頭に一致するfindstr /nにパイプして、出力ファイル名で使用する行番号を取得します。 for /f内ですべてを実行して、結果を反復し、各行の行番号とパスに解析します。 @echo off setlocal set /p "filename=type file name>" for /f "delims=: tokens=1*" %%a in ( 'dir /s /b /a-d "e:\%filename%" ^| findstr /n "^"' ) do >"path%%a.txt" echo %%b それが私のスクリプトである場合、プロンプトではなく、引数としてターゲットファイル名を渡します。@echo off for /f "delims=: tokens=1*" %%a in ( 'dir /s /b /a-d "e:\%~1" ^| findstr /n "^"' ) do >"path%%a.txt" echo %%b