|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - CMD/BAT ограничения for /f tokens |
|
|
CMD/BAT - CMD/BAT ограничения for /f tokens
|
Новый участник Сообщения: 1 |
Профиль | Отправить PM | Цитировать Доброго времени суток
Имеется csv файл со строкой, где множество значений разделено : и | причем значений больше 60. Пишу код: В таком варианте выводит значения "ячейки" 31. Если изменить 31 на любое другое число больше (32, 45, и т.д.) выводится "%B". Это что, некие ограничения CMD? Пробовал написание без кавычек с экранированием ^. То же самое. |
|
Отправлено: 09:21, 31-08-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата hAh0L13:
Цитата hAh0L13:
|
||
Отправлено: 09:29, 31-08-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2723
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
------- Отправлено: 09:59, 31-08-2018 | #3 |
Ветеран Сообщения: 2723
|
Профиль | Отправить PM | Цитировать hAh0L13,
Если из каждой строки csv-файла с разделителями | и : надо выцепить значения с некоторыми номерами-вариант 1
@Echo Off cls Set "FileIn=Z:\Box_In\тра ля ля.csv" Set "N=2 11 31 65 81" SetLocal EnableExtensions EnableDelayedExpansion For /F "usebackq delims=" %%s IN ("%FileIn%") DO ( Set "SS=%%s" &Call :Delim "%%SS:|=:%%" ":" "A" "%N%" Echo A2=!A2! A11=!A11! A31=!A31! A65=!A65! A81=!A81! ) Pause GoTo :Eof :Delim SetLocal Set "S=%1" Call Set "S=%%S:%~2=" "%%" For %%j In (%~4) Do Set /A Max=%%j EndLocal &Call :Mass %3 %4 %Max% %S% GoTo :Eof :Mass Set /A i=1 :Begin For %%j In (%~2) Do If %i%==%%j Set "%~1%%j=%~4" Set /A i+=1 If Not %i% GTR %3 (Shift /4 &GoTo :Begin) GoTo :Eof В csv файле не должно быть кавычек и всяких спецсимволов И, очень желательно, Цитата Iska:
|
|
------- Последний раз редактировалось megaloman, 01-09-2018 в 10:36. Отправлено: 15:42, 31-08-2018 | #4 |
Ветеран Сообщения: 2723
|
Профиль | Отправить PM | Цитировать hAh0L13,
Если из каждой строки csv-файла с разделителями | и : надо выцепить значения с некоторыми номерами - вариант 2
@Echo Off cls Set "FileIn=Z:\Box_In\тра ля ля.csv" Set "NN=2 11 31 65 81" SetLocal EnableExtensions EnableDelayedExpansion For %%i In (%NN%) Do Set /A Max=%%i For /F "usebackq delims=" %%s IN ("%FileIn%") DO ( Set "SS=%%s" For /L %%n In (1,1,%Max%) Do ( For /F "tokens=1* delims=|:" %%i IN ("!SS!") DO ( For %%m In (%NN%) Do If %%n==%%m Set "A%%n=%%i" Set "SS=%%j" ) ) Echo "A2=!A2!" "A31=!A31!" "A11=!A11!" "A65=!A65!" "A81=!A81!" ) pause GoTo :Eof |
|
------- Последний раз редактировалось megaloman, 01-09-2018 в 10:37. Отправлено: 18:04, 31-08-2018 | #5 |
Crazy Сообщения: 1179
|
Профиль | Отправить PM | Цитировать Начать надо с того, что файл этот совсем не csv, ибо comma-separated values...
Но даже если предположить, что это dsv, то разделитель, всё же, должен быть единым, а не: Цитата hAh0L13:
|
|
------- Отправлено: 19:42, 31-08-2018 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
? |
|
Отправлено: 23:34, 31-08-2018 | #7 |
Ветеран Сообщения: 2723
|
Профиль | Отправить PM | Цитировать Iska,
Результат работы второго варианта скрипта на Вашего ученого сКота
1,15,28,34.5,"Мама|мыла|раму:Рабы|не:мы:мы:не|рабы|Буря:мглою небо|кроет|Кот учёный",17,24 " A1=1,15,28,34.5,"Мама" " A2=мыла" " A3=раму" " A4=Рабы" " A5=не" " A6=мы" " A7=мы" " A8=не" " A9=рабы" "A10=Буря" "A11=мглою небо" "A12=кроет" "A13=Кот учёный",17,24" То есть, эта строка обработалась правильно ИМХО, второй вариант сломается на ! и еще много на чём |
------- Последний раз редактировалось megaloman, 01-09-2018 в 00:03. Отправлено: 23:53, 31-08-2018 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать megaloman, ну, в любом случае надо смотреть на файл. Сам автор после размещения вопроса пока не появлялся .
|
Отправлено: 00:14, 01-09-2018 | #9 |
Crazy Сообщения: 1179
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата hAh0L13:
Всё просто... Но условие задачи ведь выставил ТС, поэтому такое предположение недопустимо. Отсюда вывод: там не csv, однако. Цитата megaloman:
Цитата Iska:
|
||||
------- Отправлено: 08:11, 01-09-2018 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - CMD/BAT Поиск по каталогам файлов bat и конвертирование их в JPEG | freerider1989 | Скриптовые языки администрирования Windows | 1 | 18-04-2016 08:37 | |
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле | InVariable | Скриптовые языки администрирования Windows | 4 | 22-05-2015 20:06 | |
bat и cmd | pavsem7 | Хочу все знать | 3 | 29-01-2015 07:35 | |
Разное - bat и cmd | rocet | Программирование и базы данных | 8 | 14-03-2013 11:23 | |
Проблема с cmd,и *bat | Anime500 | Лечение систем от вредоносных программ | 7 | 23-09-2011 19:31 |
|