Wyodrębnij tekst z listy txt za pomocą wiersza polecenia systemu Windows

2

Mam taką listę w txt

AAA 1234561
BBB12 66698732
CCCCC 5878471
DD131 262554158

i mam katalog taki jak poniżej

DirectoryA/AAA
DirectoryA/BBB12
DirectoryA/CCCCC
DirectoryA/DD131

Chcę utworzyć plik txt o podanej nazwie, nazwijmy go id.txt, który zawiera odpowiedni kod dla jego folderu

So the DirectoryA/AAA/id.txt contains 1234561
DirectoryA/BBB12/id.txt contains 66698732 and so on. 

Próbowałem wyodrębnić wiersz za pomocą / p, ale kopiuje on całą linię, a nie tylko identyfikator.

Sonamor
źródło

Odpowiedzi:

4
for /f "tokens=1-2" %%A in (x.txt) do echo %%B > DirectoryA\%%A\id.txt

Dyskusja:

Możesz uzyskać wiele przydatnych informacji, pisząc FOR /?w wierszu polecenia. W szczególności,

FOR /F  ["Opcje "]  %zmienne  IN  (plików ustawiony )  DOkomenda [komenda-parametry]

odczytuje plik lub pliki określone między nawiasami ( file-seti) i analizuje każdą linię na tokeny.  tokens=1-2to optionsciąg, który mówi, że chcesz pierwsze i drugie słowo w każdej linii.  %%Aokreśla, że %%Ajest to zmienna, w której będzie czytane pierwsze słowo; domyślnie / automatycznie przechodzi drugie słowo %%B. Następnie echopolecenie zostaje wykonane za pomocą %%Ai %%Bustawione na dwa słowa z pliku.

Uwaga: Jeśli wpisujesz to polecenie bezpośrednio w wierszu polecenia, użyjesz %Ai %B, ale musisz użyć podwójnych znaków procentu, gdy robisz to samo w skrypcie (plik wsadowy).

Scott
źródło
Działa świetnie, czy możesz mi wyjaśnić tokeny = 1-2 i całe myślenie stojące za tym poleceniem? z góry
dziękuję
Mam nadzieję, że mógłbym cię wesprzeć Scott, dzięki za wyjaśnienie
Sonamor