Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] For, чтение двух переменных с каждой строки (http://forum.oszone.net/showthread.php?t=249554)

DesmondTruman 19-12-2012 21:46 2049264

For, чтение двух переменных с каждой строки
 
Здравствуйте, помогите пожалуйста разобраться с командой 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 2049274

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 2049321

Petya V4sechkin, Спасибо, это подходит, но только если все строки одинаковой длины (как в данном примере, что кстати мой промах, показал однобокий, простой пример, извиняюсь)

Обновлённый пример с разной длинной строк:
Код:

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


Iska 20-12-2012 05:26 2049414

Цитата:

Цитата DesmondTruman
но только если все строки одинаковой длины »

Вопрос не в длине, а в разделителе, коим у Вас выступает пробел.

Код:

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

DesmondTruman 21-12-2012 03:12 2050133

Цитата:

Цитата Iska
Вопрос не в длине, а в разделителе, коим у Вас выступает пробел. »

Это и имелось в виду.
Спасибо, то что надо!


Время: 08:16.

Время: 08:16.
© OSzone.net 2001-