2013-05-29 12 views
6

Używam Windows 8 Pro i chcę zrobić coś, co, mam nadzieję, jest bardzo proste. Chcę tylko wykonać jeden program przeciwko wszystkim plikom określonego typu w katalogu. bez drzew, tylko w katalogu płaskim. W Linuksie bym:Jak używać programu Powershell do uruchamiania programu względem wszystkich plików w katalogu

find . -name 'exec c:\user\local\bin\myprog {} \; 

mam dosłownie spędzić kilka godzin zmaga się z powłoki energii, uruchomiony w politycznych problemów, uprawnienia itd Czy jest jakiś prosty sposób można tego dokonać?

+0

czy wypróbowałeś polecenie cmdlet 'get-childItem'? Posiada flagę 'Exec \t Wywołaj polecenia cmdlet w podanym argumentem. To może być przydatne - http://windows-powershell-scripts.blogspot.com/2009/08/unix-linux-find-equivalent-in.html – Bill

Odpowiedz

14

Jest to łatwe, ale inaczej niż za pomocą find np

Get-ChildItem -File | Foreach {c:\user\local\bin\myprog $_.fullname} 

Dla robi rzeczy w wierszu poleceń, aliasy może zrobić to nieco bardziej lakoniczny:

ls -file | % {c:\user\local\bin\myprog $_.fullname} 

PowerShell preferuje poleceń, które są jest skoncentrowany, ale może być skomponowany razem, aby zapewnić wiele możliwości. Ponadto obiekty obiektów .NET rur PowerShell, np. Rury Get-ChildItem Obiekty System.IO.FileInfo. Następnie możesz użyć poleceń takich jak Foreach, Where, Select, Sort, Group, Format, aby manipulować obiektami przekazanymi do potoku. Jeśli masz czas, polecam sprawdzenie mojego bezpłatnego ebooka Effective PowerShell.

+0

dzięki Keith, dostałem polecenie ls -l .. do pracy. Zakładam, że najpierw wpisuję "powershell" w wierszu poleceń DOS, a następnie wklejam polecenie ls-file do okna wiersza polecenia? Czy istnieje bardziej prosty sposób na jej wykonanie? również, w jaki sposób można uzyskać wykonanie polecenia do echa. w przeciwnym razie nie jestem w stanie powiedzieć, jakie dane wyjściowe pochodzą z tego, co wykonano. dzięki jeszcze raz. –

+0

Lepiej uruchomić monity PowerShella, więc nie trzeba wpisywać "powershell". Polecenia są automatycznie wyprowadzane na konsolę, chyba że przekierujesz do pliku (lub $ null) lub przechwycisz dane wyjściowe w zmiennej. –

+0

Plus jeden za świetny bezpłatny ebook. – digaomatias

0

Spróbuj tego. Zmień reż do tego katalogu przez:

cd \path\to\directory\with\files 

Uruchamianie programu na wszystkich plików w katalogu:

c:\user\local\bin\myprog *.type 

Nadzieja pojawia się pytanie rację.

+1

To zadziała tylko wtedy, gdy "myprog" akceptuje symbole wieloznaczne. To nie jest odpowiednik polecenia Linuksa w przykładzie OP. –

Powiązane problemy