Ich möchte für jede Zeile meiner txt-Datei einen Ordner anlegen, zum Beispiel „[023] Text in der 23. Zeile der Datei“.
Ich verwende den unten stehenden Code, aber er besagt, dass die Syntax falsch ist. Indem ich ihn in Teile zerlegte und Kommentare verwendete, konnte ich erkennen, dass es if
auch hier ein Problem gab, aber ich konnte es nicht lösen.
@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
Hier ist ein Beispiel dessen, was ich gerne hätte ... Ich hätte gerne nur den Titel, anstatt jede Zahl in jede Zeile schreiben zu müssen ...
Antwort1
Um für jede Zeile einer Textdatei einen Ordner in einem Verzeichnis zu erstellen, benötigen Sie lediglich Folgendes:
@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
Sie müssen nicht unbedingt Variablen haben, aber ich finde, dass es das Schreiben solcher Sachen einfacher macht. for
durchläuft Ihre Textdatei, weist den Text der Zeile dem Parameter zu %%A
und fügt der Variablen eine Zahl hinzu count
. Es setzt eine Variable namens long
as count
mit zwei davorstehenden Nullen, um sie Ihrem Benennungsschema anzupassen (Sie können mehr Nullen hinzufügen, wenn Ihre Textdatei über 999 Zeilen hat), dann setzt es eine Variable namens new
as mit den letzten drei Zeichen von long
(daher das !long:~-3!
). Schließlich prüft es, ob bereits ein Ordner für Ihre Zeile vorhanden ist, und wenn keiner existiert, erstellt es diesen Ordner mit %dir%\!new! %%A
. Rufen Sie mich an, wenn Sie Fragen haben; es hätte vielleicht einen schnelleren Weg dorthin gegeben, als ich vorgeschlagen habe, aber so können Sie auf dem Weg dorthin noch ein paar Dinge ändern.