2013-04-25 5 views
7

W jaki sposób wyszukać w Visual Studio wszystkie pliki z określonym rozszerzeniem, które NIE zawierają określonego ciągu? Funkcja Znajdź w plikach w Visual Studio (VS 2008 lub VS 2010 lub VS 2012) ma opcję regex, ale nie widziałem sposobu na znalezienie plików, które nie zawierają ciągu. Muszę znaleźć w folderze projektu tysiące plików, które w plikach aspx.cs nie zawierają ciągu "security". Znalazłem kilka rozwiązań dla platformy Windows i zastanawiałem się, jak to zrobić na komputerze z systemem Windows, a najlepiej bez płacenia za aplikację? Znalazłem też inny stary posty na stackoverflow z błędnych odpowiedzi, a stosowany również oknom grep aplikację i to nie działa: Visual studio Find files that does NOT contain XJak znaleźć wszystkie pliki, które NIE zawierają określonego ciągu w środowisku Windows Visual Studio lub jakimkolwiek innym IDE?

Rozwiązanie ma również zastosowanie do tego postu: Jak używać Notepad ++, aby znaleźć pliki w katalogu, który zrobić nie zawiera ciągu: https://superuser.com/questions/110350/how-to-use-notepad-to-find-files-in-a-directory-that-do-not-contain-string:

@Peter McEvoy: dobry połów! @jerone pls nie akceptuje tej odpowiedzi, ponieważ jest błędna ... - jeroenh. to rozwiązanie nie działa. To zwróci fałszywe pozytywy

+0

VS nie ma tej funkcji. Możesz napisać makro, ale odwracanie listy ręcznie jest z pewnością szybsze. –

Odpowiedz

11

W końcu znalazłem rozwiązanie, aby znaleźć wszystkie pliki z pewnym rozszerzeniem, które NIE zawierają konkretnego ciągu, szukałem rozwiązania tego od dłuższego czasu i działa świetnie i jest za darmo. Mam nadzieję, że to pomoże innym, którzy próbują zrobić to samo.

GOTO EndComment 
1st Change source, destination, extension and string to your needs. 
2nd Remove ECHO from line 19 (If you want to make a copy of those 
specific files that contain the string to destination folder) 
3rd Save this piece of code on a file file with extension .cmd 
    and run it to get results (just double click on file). 
:EndComment 

@echo off 
setlocal 

set source=c:\Users\youruseraccount\Documents\Visual Studio 2012\PathofProject\ 
set destination=c:\foundFilesWithoutString\ 
set extension=*.aspx.cs 
set string=Security 

for /f "tokens=*" %%G in ('dir /s "%source%\%extension%" /a:-d /b') do ( 
    find /c /i "%string%" "%%G" > NUL || (
    ECHO copy "%%G" "%destination%" 
) 
) 


pause 
+1

Twoja odpowiedź nie jest powtarzana rekurencyjnie; w tym celu użyj następującej dla pętli - dla/f "tokeny = *" %% G w ("dir/s"% źródło% \% rozszerzenie% "/ a: -d/b ') do ( znajdź/c/i "% string%" "%% G"> NUL || ( Kopia ECHO "%% G" "% docelowa%" ) ) – user961954

+1

Odpowiedź została zaktualizowana przez @ user961954 komentarz – xhafan

+0

To źle, że zastąpiłeś opcja "szukaj tylko bieżący katalog" z opcją "również podkatalogi wyszukiwania", ponieważ program OP nie prosił o nią wprost, a ja aktualnie jej potrzebuję. Tak więc, potrzebuję pracować wstecz od ostatecznego rozwiązania, aby określić, jak wygląda polecenie, aby przeszukać tylko bieżący folder. – Dan

Powiązane problemy