| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		Yuk
 
 
  Joined: 24 Nov 2009 Posts: 2
 
  | 
		
			
				  (Separately) Posted: Tue Nov 24, 2009 23:58    Post subject: Автоматизация поиска | 
				     | 
			 
			
				
  | 
			 
			
				Есть текстовый файл строк примерно в 100 или более. Надо найти файлы в определенном каталоге (все файлы текстовые), в которых встречается хотя бы одна строка из первого файла (где и как угодно, без учета символа конца строки). 
 
Можно это сделать в ТС?
 
Спасибо. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Вахмурка
 
  
  Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
  | 
		
			
				  (Separately) Posted: Wed Nov 25, 2009 01:25    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				"В ТС" или "средствами ТС"? На первый вопрос - ответ "да", на второй - "нет" (насколько я знаю).
 
Давненько я не программировал батники, но сдается мне, что нечто подобное сделать можно. На досуге посмотрю. _________________ Сайт PowerPro+Total Commander
 
Скрипты PowerPro для Total Commander
 
* * *
 
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Tol!k
 
  
  Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
  | 
		
			
				  (Separately) Posted: Wed Nov 25, 2009 01:55    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Yuk, примерно так:
 
findstr /m /g:список_строк.lst d:\путь\*.txt > найдено.lst
 
подробности: findstr /? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Yuk
 
 
  Joined: 24 Nov 2009 Posts: 2
 
  | 
		
			
				  (Separately) Posted: Wed Nov 25, 2009 21:16    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Tol!k
 
Спасибо. Работает.
 
 
Не получается засунуть в Старт Меню, чтобы использовался файл под курсором, а директория в другой панели.
 
 
Command: cmd /c
 
Parameteres: findstr /m /g:"%N" "%T" > found.txt
 
 
Файл создается, но пустой. А из командной строки все работает.
 
А можно ли сделать, чтобы найденные файлы выделялись? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Tol!k
 
  
  Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
  | 
		
			
				  (Separately) Posted: Wed Nov 25, 2009 21:58    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Code: | 	 		  Parameteres: findstr /m /g:%N "%T*" > found.txt  | 	  
 
 	  | Quote: | 	 		  | А можно ли сделать, чтобы найденные файлы выделялись? | 	  
 
В TC есть команды cm_LoadSelectionFromFile и cm_LoadSelectionFromClip (файлы выделяются в активной панели) | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		swr
 
 
  Joined: 07 Jun 2007 Posts: 59
 
  | 
		
			
				  (Separately) Posted: Thu Mar 25, 2010 14:25    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				| Всё прекрасно работает, если в указанном каталоге лежат непосредственно сами файлы, в которых производится поиск, но как быть если надо производить поиск во всех вложенных папках, начиная с указанного каталога? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Tol!k
 
  
  Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
  | 
		
			
				  (Separately) Posted: Thu Mar 25, 2010 14:40    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | findstr/? wrote: | 	 		  | /D:список_папок	—	Поиск в списке папок (разделяются точкой с запятой) | 	  
 
Добавлено
 
Видимо, невнимательно прочитал  	  | Quote: | 	 		  | поиск во всех вложенных папках, начиная с указанного каталога | 	   Проще использовать параметр /S
  Last edited by Tol!k on Fri Mar 26, 2010 13:56; edited 1 time in total | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		swr
 
 
  Joined: 07 Jun 2007 Posts: 59
 
  | 
		
			
				  (Separately) Posted: Thu Mar 25, 2010 19:13    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Сурово!    
 
 
И ещё в добавок, что то не выходит у меня, помотрите пожалуйста, где накосячил:
 
 
1. Ничего не находит
 
findstr /m /g:"%N" "c:\TempDir\13\*";"c:\TempDir\14\*" > found.txt
 
 
2. Запускается cmd и ничего не происходит
 
findstr /m /g:"%N" /D:"c:\TempDir\13\*";"c:\TempDir\14\*" > found.txt
 
 
ещё несколько 5-ок вариаций перепробовал, напишите пожалуйста как правильно надо    | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		Tol!k
 
  
  Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
  | 
		
			
				  (Separately) Posted: Fri Mar 26, 2010 14:15    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				a) %N вредно заключать в кавычки
 
б) findstr /m /g:%N /d:"c:\TempDir\13";"c:\TempDir\14" *.* > found.txt
 
 
дальше наоборот: файл-список-слов под курсором, но в НЕактивной панели
 
в) findstr /s /m /g:%T%M *.* > found.txt — поиск в текущем каталоге и его подкаталогах
 
г) findstr /m /g:%T%M /f:%L > found.txt — файлы, в которых производится поиск, выделены в активной панели | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		swr
 
 
  Joined: 07 Jun 2007 Posts: 59
 
  | 
		
			
				  (Separately) Posted: Fri Mar 26, 2010 20:58    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Огромнейшее вам спасибо, так намного лучше!    | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		 |