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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Спец символы в cmd ? (http://forum.oszone.net/showthread.php?t=187183)

obli 02-10-2010 21:05 1509853

Спец символы в cmd ?
 
Есть текстовый 1.txt файл типа
111 555 333 444
222 333 666 666

хочу его разбить на строки спец символом переводом каретки и присвоить строки переменным таким примерно скрптом
for /f "delims=/n tokens=1" %%a in (1.txt) do @set string1=%%a
for /f "delims=/n tokens=2" %%a in (1.txt) do @set string2=%%a

но ничего касающего спец символов в cmd я не обнаружил может кто чего посоветует.

amel27 03-10-2010 05:52 1510061

Цитата:

Цитата obli
присвоить строки переменным »

FOR и без всяких триксов бьёт построчно:
Код:

@echo off
setlocal EnableDelayEdexpansion

for /f "delims=" %%a in (1.txt) do set /a $n+=1& set "string!$n!=%%a"
set string&pause>nul


obli 03-10-2010 13:23 1510229

странно а я думал по умолчанию у for в качестве разделителей пробел и таб

amel27 03-10-2010 13:54 1510250

Цитата:

Цитата obli
у for в качестве разделителей пробел и таб»

эти разделители применяются УЖЕ к строке, все штатные средства работают с текстом только построчно

obli 03-10-2010 14:23 1510269

Еще один вопрос а тут в качестве множество можно использовать переменную ?

for {%переменная|%%переменная} in (множество) do команда [ПараметрыКоманднойСтроки]

переменную которая содержит строку 111 555 333 444 чтоб потом значения
этой строки 111 555 333 и 4444 присвоить отдельным переменным

amel27 03-10-2010 14:41 1510282

obli, не уверен что точно понял вопрос, но перебрать можно так:
Код:

for %%i in (раз два три) do echo %%i

obli 03-10-2010 14:46 1510286

я исправил предыдущий пост чтоб немного поясней было

вроде так я должен получить 2 и 3 параметр из строки 111 555 333 444 которая находится в %string1


for /L "tokens=2" %%a in (!%string1%!) do @set 2=%%a
for /L "tokens=3" %%a in (!%string1%!) do @set 3=%%a

но увы ругается "tokens=2" was unexpected at this time

amel27 03-10-2010 15:17 1510305

Код:

@echo off

set string1=111 555 333 444
for /f "tokens=2,3" %%a in ("%string1%") do (
  set "p2=%%a"
  set "p3=%%b"
)
set p2
set p3
pause>nul


obli 03-10-2010 15:36 1510320

да я бы врядли сам бы додумал Агромное мерси так бы ещеб неделю мучился

amel27 03-10-2010 15:47 1510329

obli, да прибудет с вами HELP! ))
Код:

HELP FOR

obli 03-10-2010 16:29 1510358

p2 и p3 локальными получаются а если их в глобальные

PS HELP FOR курит нихрена он мне не помог только головная боль от него .

amel27 03-10-2010 16:43 1510365

Цитата:

Цитата obli
HELP FOR курит нихрена он мне не помог только головная боль от него »

эт вы батенька зря... а p1 и p2 в посте #8 как раз глобальные, так как команда SETLOCAL не использовалась... если вы про подстановку в цикле, то вместо %p1% нужно использовать !p1! (подробно в справке: "HELP SET")


Время: 17:55.

Время: 17:55.
© OSzone.net 2001-