|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Увеличение значения имени переменной или считывание строки файла в переменную |
|
|
CMD/BAT - [решено] Увеличение значения имени переменной или считывание строки файла в переменную
|
Пользователь Сообщения: 133 |
Профиль | Отправить PM | Цитировать Уже часа 2 держу открытым OSzone и пытаюсь сам добиться своего, но одно осталось нерешенным:
set var1=text1 set var2=text2 set var3=text3 set var4=text4 for /l %%i in (1,1,4) do ( set text=!var%%i! echo %text% ) Нужно, что бы выводилась переменные в цикле, т.е. в идеал должна программа быть такой: Но переменных "var*" 78 штук и вместо "echo %text%" используется более сложная конструкция. Если это покажется проще, то сделайте пожалуйста цикл вытаскивания переменной из файла, новая строчка-новое значение переменной(так же ":" или ";" разделителями могу сделать в файле). Буду очень признателен |
|
Отправлено: 14:47, 10-11-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата VokaMut:
|
|
Отправлено: 15:53, 10-11-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 133
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 16:28, 10-11-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать VokaMut, понятней не стало. Что именно у Вас не получается?
|
Отправлено: 17:49, 10-11-2012 | #4 |
Пользователь Сообщения: 133
|
Профиль | Отправить PM | Цитировать Цитата Iska:
chcp 866 ::файл для редактирования set infile=1\file.po ::первое слово которое ищем в файле для замены set find=findword ::последующие set var1=Слово1 set var2=Слово2 set var3=Слово3 set var4=Слово4 ::цикл проходит по каждой переменной выше for /f "tokens=2* delims==" %%i in ('set var') do ( ::задаем заменяющее слово set replace=%%i ::заменяем его @echo off setlocal enabledelayedexpansion for /F "tokens=* delims=," %%n in (!infile!) do ( set LINE=%%n set TMPR=!LINE:%find%=%replace%! echo !TMPR!>>tmp.txt ) move tmp.txt %infile% ::преобразуем file.po в file.mo msgfmt file.po -o file.mo ::архивируем всю папку с этим файлом и исключаем file.po "C:\PROGRA~1\WinRAR\rar.exe" a -m5 -s -y -ep1 -r -x*"file.po" "2\%replace%.rar" "1\*.*" ::теперь ищем заменяеющее слово и заменяем его на следующее set find=%rerep% ::сделал паузу для проверки pause ) Задается правильно, но в итоге переменная find: Получается пустая... Для проверки работоспособности архивирование и компилирование из po в mo можно опустить |
||
Отправлено: 08:15, 11-11-2012 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Что такое «rerep» и откуда оно берётся? Ибо в первый раз она появляется из ниоткуда и уже сразу участвует в присваивании.
Так что: Цитата VokaMut:
|
|
Отправлено: 08:28, 11-11-2012 | #6 |
Пользователь Сообщения: 133
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Все равно в итоге переменная пустая, даже слово(findword) заменяется на пустое место |
|
Последний раз редактировалось VokaMut, 11-11-2012 в 08:57. Отправлено: 08:51, 11-11-2012 | #7 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата VokaMut:
1 должно быть в начале кода 2 Присвоение переменной происходит в блоке первого for и, для правильного ее использования в дальнейшем внутри блока, она должна использоваться в знаках "!", а не в "%". 3 В строке переменную %replace% (!replace!) использовать затруднительно. Попробуйте так: |
|
Отправлено: 09:27, 11-11-2012 | #8 |
Пользователь Сообщения: 133
|
Профиль | Отправить PM | Цитировать В итоге получилось:
chcp 866 setlocal enabledelayedexpansion set infile=file.po set find=123 set var01=234 set var02=345 set var03=567 set var04=678 for /f "tokens=2* delims==" %%i in ('set var') do ( for /F "tokens=* delims=," %%n in (!infile!) do ( set LINE=%%n set TMPR=!LINE:%find%=%%i! Echo !TMPR!>>TMP.TXT ) move TMP.TXT %infile% set find=!i! pause ) |
Отправлено: 10:00, 11-11-2012 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата VokaMut:
|
|
Отправлено: 10:14, 11-11-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] поиск файла по маске и запись этого имени в переменную | ___dima___ | Скриптовые языки администрирования Windows | 20 | 18-06-2017 01:46 | |
Разное - Добавление имени файла в начало каждой строки. | CkapHa | Программирование и базы данных | 2 | 02-01-2012 22:13 | |
CMD/BAT - Смена кодировки текстового файла, поиск строки и разбор значения | profcom | Скриптовые языки администрирования Windows | 0 | 10-11-2011 20:20 | |
CMD/BAT - [решено] Чтение строки из файла в переменную | Николя | Скриптовые языки администрирования Windows | 42 | 17-01-2010 19:42 | |
[решено] Считывание параметров переменной | morgan1991 | AutoIt | 3 | 07-03-2009 14:38 |
|