|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как работать с переменной внутри цикла FOR? |
|
CMD/BAT - [решено] Как работать с переменной внутри цикла FOR?
|
Новый участник Сообщения: 2 |
Подскажите, пожалуйста. Не могу понять, что происходит.
Мне нужно, чтобы при каждой итерации в цикле for (кусок кода ниже) переменная j увеличивалась на 1. Но даже присваивание ей не работает: на каждом шаге получаю "before: 1, after: 1". Что я делаю не так? |
|
Отправлено: 22:04, 29-09-2010 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата bredych:
Как сказали выше, для этого требуется отложенное расширение переменных... Для наглядности: @echo off setlocal enabledelayedexpansion set x=1 ( set x=2 echo x = %x% - неправильно echo x = !x! - правильно ) pause Цитата bredych:
Если требуется сортировка: Про имена выходных файлов, тоже написали... В общем, для полноценной помощи, необходима правильная формулировка задачи, а не неправильные попытки её решения... |
||
------- Отправлено: 21:26, 04-09-2018 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2767
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Это подзадача к более ранней. Отсюда и цикл - внести переменную в значения, которые потом вносить в реестр или передавать setacl -у, поскольку напрямую переменную перед передачей параметров не ресолвило. В итоговом цикле разные имена файлов не нужны, достаточно в конце цикла задать исполнение его, ожидание исполнения, и цикл заново, перезаписать для другого юзера. Про слеш в имени - ага, не подумал.. Думал, команда цикла будет выдавать список только самих ключей без родителя. Отсюда еще одна ошибка в выводящемся коде (и еще одна причина сначала посмотреть, что выведется, а не пускать на исполнение сразу)) Насчет !FTMP! мне было неочевидно, в промежутках меж работы гуглил, листал маны, так и не нашел, почему надо делать так, а не обычным процентом. Но сработало. Правда как-то странно: В вывод даёт полный набор строк от первого, 18 юзера, и только по одной строке от остальных. вывод:
regedit 4
setacl.exe -on HKU\HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.adoc\UserChoice -ot reg -actn trustee -trst n1:domain\adminuser;ta:remtrst;w:dacl reg delete HKU\HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.adoc\UserChoice /f reg delete HKU\HKEY_USERS\S-1-5-18\Software\Classes\.adoc /f reg delete HKU\HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.adoc\UserChoice /f reg delete HKU\HKEY_USERS\S-1-5-19\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.adoc\UserChoice /f reg delete HKU\HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.adoc\UserChoice /f reg delete HKU\HKEY_USERS\S-1-5-21-blabla\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.adoc\UserChoice /f reg delete HKU\HKEY_USERS\S-1-5-21-blabla_Classes\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.adoc\UserChoice /f reg delete HKU\HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.adoc\UserChoice /f апд, нашел глюк, я эту строку тупо забыл с % на ! заменить. сработало только когда я заремил переименование вывода, чтоб всё выводило в один файл.. |
|
------- Последний раз редактировалось bredych, 07-09-2018 в 14:27. Отправлено: 12:06, 07-09-2018 | #32 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата bredych:
|
|
Отправлено: 17:13, 07-09-2018 | #33 |
Сообщения: 53488
|
Профиль | Отправить PM | Цитировать |
Отправлено: 18:30, 07-09-2018 | #34 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Здравствуйте!
Помогите, пожалуйста, с ошибкой в коде. Цикл ищет определенный текст в реестре, затем записывает адрес текста в переменную. Но почему-то переменная оказывается пустая. |
Отправлено: 06:53, 23-11-2018 | #35 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:03, 23-11-2018 | #36 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать alpap,
Результат команды: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\7AB5E7046046FB044ACD63458B5F481C\InstallProperties HelpLink REG_EXPAND_SZ https://support.cryptopro.ru/ Поиск завершен: найдено совпадений: 1. x="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\7AB5E7046046FB044ACD63458B5F481C\InstallProperties" |
Отправлено: 06:09, 26-11-2018 | #37 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата alexfrienmank:
в чем проблема, причем тут for ? |
|
Отправлено: 01:14, 27-11-2018 | #38 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать alpap,
for нужен для поиска адреса в реестре, т.к. адрес может меняться на компьютерах. Проблема в том, что set var=HKEY... можно сделать, но значение переменной, к сожалению, не сохраняется. |
Отправлено: 06:49, 27-11-2018 | #39 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать все равно я не понимаю зачем это надо именно так, если что-то внутри этого искать еще понятно ...
@echo off set "var=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\7AB5E7046046FB044ACD63458B5F481C\InstallProperties" for /f "delims=" %%a in ('2^>nul reg query "%var%"') do set "newvar=%%a" if defined newvar (echo %newvar%) else echo No registry key or parameter pause |
Отправлено: 23:10, 27-11-2018 | #40 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. | NiOl | Скриптовые языки администрирования Windows | 7 | 31-01-2019 19:58 | |
VBA - Как присвоить переменной содержимое Range на VBA for WORD | Selena57 | Программирование и базы данных | 1 | 25-03-2009 00:52 | |
[решено] Первая строчка переменной. Как скопировать? | r35TnX | AutoIt | 5 | 06-03-2009 07:12 | |
CMD/BAT - [решено] как правильно передать переменные подпрограмме из цикла for | akrav | Скриптовые языки администрирования Windows | 4 | 07-01-2008 17:51 | |
js имя объекта из переменной, как? | Вебмастеру | 13 | 15-03-2005 07:22 |
|