PDA

Показать полную графическую версию : [решено] For, чтение двух переменных с каждой строки


DesmondTruman
19-12-2012, 21:46
Здравствуйте, помогите пожалуйста разобраться с командой For.
К примеру есть names.txt:

1980 Петров Иван Петрович
1980 Иванов Петр Иванович
1980 Пупкин Вася Анонимусович

Нужно каждую строку перенаправить в файл "%имя_человека_из_строки%.txt".
Тоесть к примеру Иван.txt с содержимым "1980 Петров Иван Петрович", Петр.txt c "1980 Иванов Петр Иванович" и т.д.
Так и не поняв, как вывести с одной командой for сразу две переменные: полная строка и имя(3-е слово в строке) пошел по другому пути:


for /f "tokens=*" %%i in (names.txt) do (for /f "tokens=3 delims= " %%j in (names.txt) do (echo %%i >%%j.txt))
Но и это не помогло.

Petya V4sechkin
19-12-2012, 22:04
DesmondTruman, как-то так?
@Echo Off
For /F "Tokens=1-4" %%A In (names.txt) Do Echo %%A %%B %%C %%D>>%%C.txt

DesmondTruman
19-12-2012, 23:14
Petya V4sechkin, Спасибо, это подходит, но только если все строки одинаковой длины (как в данном примере, что кстати мой промах, показал однобокий, простой пример, извиняюсь)

Обновлённый пример с разной длинной строк:
1980 Петров Иван Петрович работал в местной школе трудовиком, спился.
1980 Иванов Петр Иванович утверждал о близком контакте 7-го рода с пришельцами, ушёл в секту.
1980 Пупкин Вася Анонимусович после выигрыша в лотерее 1 млн. дол. обосновал свою компанию со своим блэкджеком и ...

Iska
20-12-2012, 05:26
но только если все строки одинаковой длины »
Вопрос не в длине, а в разделителе, коим у Вас выступает пробел.

For /F "Tokens=1-3*" %%A In (names.txt) Do Echo %%A %%B %%C %%D>>%%C.txt

DesmondTruman
21-12-2012, 03:12
Вопрос не в длине, а в разделителе, коим у Вас выступает пробел. »
Это и имелось в виду.
Спасибо, то что надо!




© OSzone.net 2001-2012