Ander_73
								
						
							
				  				  								- Стаж: 8 лет 9 месяцев
 				- Сообщений: 4124
 				- Репутация:127[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				hseg0, строчкане нужна, это просто для демонстрации результата.
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
								 																			
			
            			
	
		 		Отправлено:  26-Сен-2022 15:32
					(спустя 1 месяц 3 дня)
				 
	
		
		
						
			
						
							
								cartmenezz
								
						
							
				  				  								- Стаж: 10 лет
 				- Сообщений: 527
 				- Репутация:14[+]   [-]
 				- Откуда: Калининград
 				
							
			 
			
			 | 
						
		
			
				
				Приветствую     Нет ли способа проверки существования переменной цикла? по аналогии с обычной переменной? возникла задачка обработать большой текстовый файл, такого вида:name1 name2 text name3 text text text name4 name5 text text name6  Т.е. в некоторых строках одна подстрока, в некоторых несколько. Нужны только те, где несколько. Подумал, а вдруг прокатит что-то типа:for /f "tokens=1,*" %%A in (merge.txt) do (   if DEFINED %%B (>>merge_2.txt echo %%A %%B) )  Конечно же, толку не было. --- Поставленную задачу я, в принципе, уже решил двумя способами:-=1=- for /f "tokens=1,*" %%A in (merge.txt) do (   set var=%%B   if DEFINED var (>>merge_2.txt echo %%A %%B) ) -=2=- <merge.txt >merge_2.txt findstr /RC:".* .*"  --- Но осталось пара вопросов, чисто для общего развития: 1) есть ли все-таки способ проверки существования переменной цикла? или колличества токенов в строке? 2) были сомнения насчет первого способа, ведь присвоение переменной var значения происходит в цикле, тем не менее он работает и без каких либо хитростей (без call или EnableDelayedExpansion), получается для if DEFINED это вообще не имеет значения? получается, что новое значение переменной (присвоенное в текущей итерации цикла) сразу прочитать нельзя, а проверить существование этой переменной можно? и когда переменная получала нулевое значение (если %%B не было) и она обнулялась, то это тоже сразу же "было известно"... интересненько
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								cartmenezz
								
						
							
				  				  								- Стаж: 10 лет
 				- Сообщений: 527
 				- Репутация:14[+]   [-]
 				- Откуда: Калининград
 				
							
			 
			
			 | 
						
		
			
				
				Ander_73,     опять я сам себя перемудрил)) спасибо)
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								cartmenezz
								
						
							
				  				  								- Стаж: 10 лет
 				- Сообщений: 527
 				- Репутация:14[+]   [-]
 				- Откуда: Калининград
 				
							
			 
			
			 | 
						
		
			
				
				столкнулся с проблемой: 1. Выбор файла с помощью FileToOpen:chcp 1251>nul set "list_file=" for /f "delims=" %%A in ('FileToOpen "set list_file=" "*.txt;*.cfg;*.ini" "SELECT A FILE" /noquote') do %%A chcp 866>nul  2. Вывод строк, отфильтрованных с помощью findstr:for /f "tokens=*" %%A in ('findstr /bvrc:" *[#/;]" "%list_file%"') do echo %%A  Как выяснилось, findstr капризен к имени(пути) файла - попался вот такой:E:\Текст «Текст» Текст\имя.txt  В итоге ошибка:FINDSTR: Не удается открыть E:\'?Єбв <'?Єбв> '?Єбв\Ё┐п.txt  --- - Путь в переменную попал как надо (пробовал его просто выводить) - Проблема именно в findstr (пробовал вне скрипта, просто в командной строке выполнить: findstr "." "E:\Текст «Текст» Текст\имя.txt" - Пробовал предварительно переключать codepage на 1251 (и на 65001), толку нет - При этом с find проблем нет: find "." "E:\Текст «Текст» Текст\имя.txt" (отрабатывает как надо) --- Получается, что более продвинутый findstr уступает простенькому find? Возможно и еще какие-то символы в имени файла его собьют с толку? Проблема в том, что нужен именно findstr, можно ли как-то бороться с его слабостью? Пока не придумал ничего лучше чем переделать 1ю часть вот так:chcp 1251>nul set "list_file=" for /f "delims=" %%A in ('FileToOpen "set list_file=" "%SystemDrive%\*.txt;*.cfg;*.ini" "SELECT A FILE WITH PACKAGES LIST" /noquote') do %%A chcp 866>nul copy /Y "%list_file%" "tmp\list_file.txt" set "list_file=tmp\list_file.txt"  Но это уже обходной вариант, хотелось бы саму проблему понять...
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								JuraAD
								
						
							
				  				  								- Стаж: 4 года 3 месяца
 				- Сообщений: 83
 				- Репутация:27[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				cartmenezz, Не понял что ты делаешь? Создал: O:\x\._\_\Текст «Текст» Текст>dir /b /s O:\x\._\_\Текст «Текст» Текст\1.txt Содержимое 'O:\x\._\_\Текст «Текст» Текст\1.txt': 1 2 3 11 12 13 21 22 23 Написал скрипт 1.cmd: @echo off chcp 1251>nul type "O:\x\._\_\Текст «Текст» Текст\1.txt" | findstr "1" chcp 866>nul set /p a= Результат: O:\x\._\_>1.cmd 1 11 12 13 21 ps: делай type по файлам и фильтруй содержимое...
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								cartmenezz
								
						
							
				  				  								- Стаж: 10 лет
 				- Сообщений: 527
 				- Репутация:14[+]   [-]
 				- Откуда: Калининград
 				
							
			 
			
			 | 
						
		
			
				
				Приветствую. Нужно через cmd получить текущий ip-адрес. Проблема в том, что ipconfig выдает больше чем нужно: У меня, например, установлен VirtualBox, его ip так же присутствует в списке. Получается, если просто искать по "IPv4", то будет два совпадения. --- Заметил, что у Блока VirtualBox пустое поле " Default Gateway". Можно ли за это зацепиться? Всегда ли будет так? у других виртуалок оно тоже пустое? Тогда можно было бы как-то так:chcp 437>nul set ip=& for /f "tokens=1,2 delims=:" %%A in ('ipconfig') do (   if "%%A" EQU "   IPv4 Address. . . . . . . . . . . " set "ip=%%B"& call set "ip=%%ip: =%%"   if "%%A" EQU "   Default Gateway . . . . . . . . . " if "%%B" NEQ " " GoTo :2 ) :2 if DEFINED ip echo %ip% echo. pause  или так:chcp 437>nul set ip=& for /f "tokens=1,2 delims=:" %%A in ('ipconfig') do (   echo %%A| findstr "IPv4" >nul && (set "ip=%%B"& call set "ip=%%ip: =%%")   echo %%A| findstr "Gateway" >nul && (if "%%B" NEQ " " GoTo :2) ) :2 if DEFINED ip echo %ip% echo. pause  К сожалению, нет возможности опробовать на Win7, Win8, поэтому насчет первого варианта больше сомнений (вдруг вывод ipconfig чуть другой), просто второй вариант подольше отрабатывает, а первый вообще без задержки... Так что если в принципе буду уверен в данном способе, не поленюсь и поставлю другие системы для тестов. Главный вопрос, всегда ли будет работать такой метод, или при каких-нибудь настройках системы, каком-нибудь установленном стороннем софте в выхлопе ipconfig могут быть еще непустые "Default Gateway"?-Еще была мысль использовать arp:C:\Users\UsER1>arp -a Interface: 192.168.56.1 --- 0x2   Internet Address      Physical Address      Type   192.168.56.255        ff-ff-ff-ff-ff-ff     static   224.0.0.2             01-00-5e-00-00-02     static   224.0.0.22            01-00-5e-00-00-16     static   224.0.0.251           01-00-5e-00-00-fb     static   224.0.0.252           01-00-5e-00-00-fc     static   239.255.255.250       01-00-5e-7f-ff-fa     static Interface: 192.168.1.140 --- 0xb   Internet Address      Physical Address      Type   192.168.1.1           50-ff-20-69-01-6f     dynamic   192.168.1.86          90-48-9a-45-9c-8d     dynamic   192.168.1.110         c0-d2-f3-42-d9-0a     dynamic   192.168.1.120         00-9e-c8-b3-82-c6     dynamic   192.168.1.255         ff-ff-ff-ff-ff-ff     static   224.0.0.2             01-00-5e-00-00-02     static   224.0.0.22            01-00-5e-00-00-16     static   224.0.0.251           01-00-5e-00-00-fb     static   224.0.0.252           01-00-5e-00-00-fc     static   239.255.255.250       01-00-5e-7f-ff-fa     static   255.255.255.255       ff-ff-ff-ff-ff-ff     static  И брать строки с типом "dynamic", это как раз адреса нужного формата.. Мне именно формат адреса нужен (устройств в локалке), т.е. ip без последней цифры (192.168.1. в моем случае)... Но как и с первым методом, опасаюсь, что просто подгоняю под свои условия, под свой комп, свою сеть... А нужна универсальность.. ... Я в этих "сетевыми" делах совсем не разбираюсь, может есть еще какие команды, которые могут выдать нужный адрес(а)? или сторонняя утилита, но такая чтобы на нее антивирусы не огрызались?
								
							 
			
  Последний раз редактировалось: cartmenezz (2022-10-06 21:45), всего редактировалось 1 раз 							 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								Ander_73
								
						
							
				  				  								- Стаж: 8 лет 9 месяцев
 				- Сообщений: 4124
 				- Репутация:127[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				97365Заметил, что у Блока VirtualBox пустое поле " Default Gateway".  Да, шлюз в системе должен быть только один. Можно прописать и больше, но тогда - ой.
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								JuraAD
								
						
							
				  				  								- Стаж: 4 года 3 месяца
 				- Сообщений: 83
 				- Репутация:27[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				cartmenezz,ROUTEROUTE.EXE print =========================================================================== Список интерфейсов   8...хх хх хх хх хх 01 ......Check Point Virtual Network Adapter For Endpoint VPN Client   6...хх хх хх хх хх 02 ......Qualcomm Atheros AR8171/8175 PCI-E Gigabit Ethernet Controller (NDIS 6.30)   1...........................Software Loopback Interface 1 =========================================================================== IPv4 таблица маршрута =========================================================================== Активные маршруты: Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика           0.0.0.0          0.0.0.0      192.168.0.1      192.168.0.2     35         127.0.0.0        255.0.0.0         On-link         127.0.0.1    331         127.0.0.1  255.255.255.255         On-link         127.0.0.1    331   127.255.255.255  255.255.255.255         On-link         127.0.0.1    331       192.168.0.0    255.255.255.0         On-link       192.168.0.2    291       192.168.0.2  255.255.255.255         On-link       192.168.0.2    291     192.168.0.255  255.255.255.255         On-link       192.168.0.2    291         224.0.0.0        240.0.0.0         On-link         127.0.0.1    331         224.0.0.0        240.0.0.0         On-link       192.168.0.2    291   255.255.255.255  255.255.255.255         On-link         127.0.0.1    331   255.255.255.255  255.255.255.255         On-link       192.168.0.2    291 =========================================================================== Постоянные маршруты:   Отсутствует Дефолтный шлюз 1 (может отсутствовать, или несколько, но с разной метрикой/приоритет - не встречал) - отмечен жирным, физических интерфейсов может быть куча, у каждого может быть несколько сетей и соответствующих им шлюзов (шлюза может и не быть, если сеть внутренняя и нет внешнего доступа)... Вообще, шлюз прописывается для сети для обращения во внешний мир, а не физического интерфейса... Обрати внимание: 224.0.0.0 240.0.0.0 On-link 127.0.0.1 331 224.0.0.0 240.0.0.0 On-link 192.168.0.2 291 224.0.0.0 - мультимедия пока работает и-фейс 192.168.0.2 будет срабатывать маршрут по приоритету 192.168.0.2 291 исчезнет 192.168.0.2 - сработает 127.0.0.1 331 127.0.0.1 - внутреняя сеть (loopback)
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
								 																			
			
            			
	
		 		Отправлено:  09-Окт-2022 19:28
					(спустя 1 день 21 час)
				 
	
		
		
						
			
						
							
								cartmenezz
								
						
							
				  				  								- Стаж: 10 лет
 				- Сообщений: 527
 				- Репутация:14[+]   [-]
 				- Откуда: Калининград
 				
							
			 
			
			 | 
						
		
			
				
				JuraAD,     Пока не понял, как мне всем этим воспользоваться, доберусь до компа и опробую команду, может станет яснее) ... Благодарю! ... как я понял, надо искать строку с 0.0.0.0 и брать третью подстроку... Но, если брать в расчет это:97383 может отсутствовать, или несколько, но с разной метрикой ... физических интерфейсов может быть куча, у каждого может быть несколько сетей и соответствующих им шлюзов (шлюза может и не быть, если сеть внутренняя и нет внешнего доступа)...  то, видимо, не слишком надёжный метод получается...
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								Ander_73
								
						
							
				  				  								- Стаж: 8 лет 9 месяцев
 				- Сообщений: 4124
 				- Репутация:127[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				cartmenezz, если в системе несколько шлюзов, то это либо кривые руки, либо сложная система роутинга, прописанная вручную. Вряд ли рядовой юзер будет заниматься таким шаманством.
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
		
		
						
			
						
							
								JuraAD
								
						
							
				  				  								- Стаж: 4 года 3 месяца
 				- Сообщений: 83
 				- Репутация:27[+]   [-]
 								
							
			 
			
			 | 
						
		
			
				
				Ander_73, Включил в параллель к ethernet WiFi - результат -) :routeROUTE.EXE print =========================================================================== Список интерфейсов   8...xx xx xx xx xx 01 ......Check Point Virtual Network Adapter For Endpoint VPN Client   7...xx xx xx xx xx 02 ......Microsoft Wi-Fi Direct Virtual Adapter  48...xx xx xx xx xx 03 ......Microsoft Hosted Network Virtual Adapter   6...xx xx xx xx xx 04 ......Qualcomm Atheros AR8171/8175 PCI-E Gigabit Ethernet Controller (NDIS 6.30)  11...xx xx xx xx xx 05 ......Qualcomm Atheros AR946x Wireless Network Adapter   1...........................Software Loopback Interface 1 =========================================================================== IPv4 таблица маршрута =========================================================================== Активные маршруты: Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика           0.0.0.0          0.0.0.0      192.168.0.1      192.168.0.2     35 <-Ethernet           0.0.0.0          0.0.0.0      192.168.0.1      192.168.0.5     50 <-WiFi         127.0.0.0        255.0.0.0         On-link         127.0.0.1    331         127.0.0.1  255.255.255.255         On-link         127.0.0.1    331   127.255.255.255  255.255.255.255         On-link         127.0.0.1    331       192.168.0.0    255.255.255.0         On-link       192.168.0.2    291       192.168.0.0    255.255.255.0         On-link       192.168.0.5    306       192.168.0.2  255.255.255.255         On-link       192.168.0.2    291       192.168.0.5  255.255.255.255         On-link       192.168.0.5    306     192.168.0.255  255.255.255.255         On-link       192.168.0.2    291     192.168.0.255  255.255.255.255         On-link       192.168.0.5    306         224.0.0.0        240.0.0.0         On-link         127.0.0.1    331         224.0.0.0        240.0.0.0         On-link       192.168.0.2    291         224.0.0.0        240.0.0.0         On-link       192.168.0.5    306   255.255.255.255  255.255.255.255         On-link         127.0.0.1    331   255.255.255.255  255.255.255.255         On-link       192.168.0.2    291   255.255.255.255  255.255.255.255         On-link       192.168.0.5    306 =========================================================================== Постоянные маршруты:   Отсутствует Ничего страшного и сложного в этом нет... Система сама сгенирила маршруты. Статику пишут когда нужно перерулить сетки в другой интерфейс с сеткой...
								
							 
										 
		
	 | 
 
	 
		 
 
 
	
								 																			
			
            			
	
		 		Отправлено:  13-Окт-2022 19:47
					(спустя 2 дня 23 часа)
				 
	
		
		
						
			
						
							
								dimo70
								
						
							
				  												- Стаж: 7 лет 11 месяцев
 				- Сообщений: 3799
 				- Репутация:27[+]   [-]
 				- Откуда: BG
 				
							
			 
			
			 | 
						
		
		
	 | 
 
	 
		 
 
 
 
 
 
Страница 77 из 95 
	
	
		Текущее время: 04-Ноя 18:22 
		Часовой пояс: UTC + 3  
	 
	
 
	
	
		
		Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
  
	 
	 | 
 
 
	 
	 |