Pętla wiersza poleceń, aby uruchomić polecenie na wszystkich plikach w katalogu (plus podkatalogi, jeśli to możliwe

14

Zakładam, że jest to dość łatwe, ale nie mam doświadczenia z narzędziami wiersza poleceń systemu Windows. Zasadniczo muszę iterować wszystkie pliki w katalogu (świetnie, jeśli może tworzyć podkatalogi, ale w razie potrzeby mogę uruchomić go w każdym z 5 katalogów), uzyskać nazwę jako zmienną i uruchomić

"C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
   -colorspace Gray -colors 32 file_var file_var

Widziałem dynamicznie nazwy plików w wierszu polecenia pętli . Czy byłbym w stanie tego użyć (zamieniając SET ... z powyższym poleceniem)? Przestrzeń na danym komputerze jest ograniczona, więc nie mogę wykonać kopii zapasowej przed uruchomieniem tego na tym etapie (źle, wiem).

Robert
źródło
Robert, jeśli udało Ci się odpowiedzieć na własne pytanie, dodaj swoją odpowiedź i zaakceptuj ją jako poprawną.
Julian Knight
Nie sądzę, że jest to dokładnie to, czego chcesz, koniec ( "%%f" "%%f") po prostu umieści nazwę pliku (z pełną ścieżką) dwa razy. Prawdopodobnie chcesz użyć czegoś takiego, "%%f" "%%~dpnf.gif"aby zmienić rozszerzenie pliku wyjściowego.
Synetech
@JulianKnight - dzięki, naprawdę próbowałem cofnąć się, kiedy, ale myślę, że było to zmuszone czekać, aby to zrobić. Od tego czasu trochę zapomniałem o tym pytaniu.
Robert

Odpowiedzi:

5

Otwórz PowerShell

$files = Get-ChildItem -Recurse 
foreach ($file in $files){
    c:\windows\System32\notepad.exe $file.FullName
}

Get-ChildItem pobiera listę plików jako obiekty z bieżącego podkatalogu. „-recurse” obejmie podkatalogi. To umieszcza go w tablicy $ Files.

Pętla foreach przechodzi przez każdy plik i wywołuje notatnik z argumentem wiersza poleceń pełnej ścieżki nazwa-pliku do każdego pliku.

UWAGA: Przetestuj powyższy kod w katalogu z kilkoma małymi plikami tekstowymi, ponieważ otworzy instancję Notatnika dla każdego pliku.

To powinno dać ci wyobrażenie, jak poradzić sobie z tym, co chcesz zrobić.

PA
źródło