Wiersz poleceń również w Windows 10

Dzisiaj krótka porada dotycząca używania wiersza poleceń w najnowszym systemie Microsoftu.

Linia poleceń jest zapewne świetnie znana wszystkim użytkownikom wszelkich dystrybucji Linuxa. Natomiast niewiele osób korzysta z tego narzędzia w systemach Windows. Jest to błąd ponieważ umiejętne wykorzystanie wiersza poleceń może bardzo ułatwić i przyspieszyć pracę.

Przykład wykorzystania opiszę na podstawie problemu jaki spotkałem w ostatnim czasie i rozwiązałem go właśnie za pomocą tego przydatnego, a często pomijanego elementu systemu operacyjnego.

Problem

Otóż niedawno musiałem szybko zmienić nazwy kilkudziesięciu plików tekstowych równocześnie. Nie będę tutaj opisywał dlaczego chciałem to zrobić bo nie jest to w tym momencie istotne.

Wyobraźmy sobie zatem taką sytuację: w pewnym folderze znajduje się kilkadziesiąt plików tekstowych o różnych nazwach. Sytuację obrazuje poniższy zrzut ekranu:

Dużo plików tekstowych o różnych losowych nazwach – jednym słowem bałagan!

Wyobraźmy sobie, że użytkownik (w tym wypadku ja) chce zmienić nazwy plików w taki sposób: 01.txt, 02.txt, 03.txt… Oczywiście można to zrobić ręcznie i zmieniać nazwy po kolei. Jednak mi zależało na czasie oraz chciałem mieć potem szybką możliwość zmiany numeracji plików (na przykład od piątki). Co można zrobić w takim wypadku? Ano, skorzystać właśnie z wiersza poleceń oraz z prostego skryptu, który napiszemy za moment w pliku .bat (kto jeszcze pisze skrypty w Windowsie!).

Rozwiązanie

Nasz skrypt uruchomimy właśnie w wierszu poleceń. Postarajmy się go zatem uruchomić w naszym folderze. I tutaj pierwsza porada.

Porada nr 1: Aby uruchomić wiersz poleceń w Win10 wpisujemy po prostu w pasku ścieżki: cmd. W starszych systemach możliwe było to często po kliknięciu PPM z wciśniętym klawiszem shift, natomiast w Win10 pozwoli to jedynie na uruchomienie PowerShella, który nie jest już tak wygodny w użyciu, ale dla porządku dodam że ma wielu zwolenników. Stosuje się tam troszkę inną składnię niż w klasycznym wierszu poleceń, a same polecenia nieco się różnią. Może kiedyś zrobię osobny wpis właśnie o PowerShell.

Powracając do naszego wiersza poleceń to załóżmy, że już go uruchomiliśmy:

W tym miejscu wpisujemy cmd i…
…już uruchomiliśmy w wygodny sposób wiersz poleceń w naszym folderze!

Oczywiście wszystkie nasze rozkazy moglibyśmy wprowadzać bezpośrednio tutaj. Jest to jednak mało wygodne. Aby cały proces zautomatyzować, tworzymy pusty plik tekstowy (ja nazwałem go skrypt) i zaczynamy go wypełniać niezbędnym kodem. Ja po prostu wrzucę tutaj kod skryptu aby każdy mógł się nim pobawić samodzielnie. Wytłumaczę jedynie mniej jasne fragmenty.

@echo off
SetLocal EnableDelayedExpansion
set i=0

for %%a in (*.txt*) do (
 if !i! LSS 10 (
   ren "%%a" "0!i!.txt"
 )
 if !i! GEQ 10 (
   ren "%%a" "!i!.txt"
 )
 set /A i=i+1
 echo !i!
)

:End

Jakie polecenia widzimy w skrypcie? Po pierwsze wyłączmy w nim echo aby nie zaśmiecać sobie wiersza poleceń w trakcie pracy skryptu. Kolejne polecenie (SetLocal EnableDelayedExpansion) pozwala nam na korzystanie ze zmiennych (w naszym przypadku „i”) wewnątrz pętli. Tak, wiem że jest to niejasne, szczególnie dla osób mających styczność z programowaniem, ale w przypadku komend w Win takie zabiegi będą częste. Następnie pobieramy w pętli for wszystkie pliki typu .txt znajdujące się w folderze i za pomocą polecenia ren oraz prostych wyrażeń regularnych, podmieniamy ich nazwy na takie jakie sobie życzymy. W moim przypadku chciałem aby skrypt ponumerował mi pliki w formacie: 01.txt, 02.txt … 15.txt itd. Dlatego zastosowałem w pętli for dwa warunki. Jeden działa kiedy mój iterator jest mniejszy od 10 i wtedy musimy do nazwy dodać prefiks w postaci zera. Jeżeli jest inaczej to z prefiksu rezygnujemy. W przypadku sprawdzania czy „i” jest większe bądź mniejsze od 10 zastosowałem polecenia: GEQ (greater equal) oraz LSS (less). Dlaczego tak? Ponieważ operatory „<” oraz „>” są zarezerwowane przez wiersz poleceń na przykład dla znaku zachęty. Tutaj kolejny zgrzyt dla programistów, kto jednak powiedział, że wszystko musi być takie jasne i oczywiste 🙂 Wracając do naszego skryptu, widzimy jeszcze jedną dziwną rzecz. Mianowicie wszędzie gdzie odwołuję się do zmiennej „i”, umieszczam ją pomiędzy znakami „!”. Kolejna dziwna sprawa – taki rodzaj odwołania sprawia, że możemy się odnieść do zmiennej będącej niejako lokalną zmienną skryptu. Sami przyznacie, że jest tutaj dużo dziwnych mechanizmów. Znanym poleceniem echo wypisuję sobie jeszcze iterator w konsoli i w zasadzie jest to już koniec skryptu.

No dobrze, skrypt napisany (pamiętamy aby zmienić jego rozszerzenie na .bat), pozostaje zatem go uruchomić. Poniżej efekt działania:

Zapanował ład i porządek.

Widzimy, że dosłownie w sekundę udało nam się zmienić nazwy plików w folderze w taki sposób jak tego chcieliśmy.

Podsumowanie

Mam nadzieję, że wpis okaże się przydatny. Jego celem było pokazanie możliwości systemu o jakich często zapominamy. Czasami po prostu warto wrócić do poczciwego wiersza poleceń. Zachęcam do samodzielnej zabawy i modyfikowania skryptu, a także szerszego zastosowania linii poleceń także w systemie Windows. Oczywiście zachęcam także do komentowania i dzielenia się swoimi pomysłami na wykorzystanie tego narzędzia.

Ciekawe będzie także porównanie tych narzędzi w Windowsie oraz Linuxie. Oczywiście w tym drugim linia poleceń i pisanie skryptów jest dużo bardzie przejrzyste, co sam pierwszy przyznam 🙂 Lecz to już materiał na całkiem inny wpis.

Dodaj komentarz

Twój adres email nie zostanie opublikowany.