Pomocy przy stworzenie batcha


(Bobsley82) #1

Witam wszystkich.

Mam ogromna prośbę. Potrzebuję stworzyć batcha w CMD który w pliku tekstowym będzie znajdował dany ciąg znaków i tworzył drugi plik tekstowy bez tego ciągu, np:

zawartość pliku textowego: abcdef123456

wyszukanie ciągu "f1" i utworzenie pliku tekstowego: abcde23456.

dotarłem do tego, że funkcja findstr znajduję dany ciąg z tym, że nie wiem co dalej. Jak utworzyć plik bez tego ciągu?

da się? z góry dziękuje za pomoc


(Drobok) #2

Próbowałeś /v ?


(Bobsley82) #3

chodzi ci o: "/V Drukuje tylko wiersze, które nie zawierają dopasowania." ?

Mam na razie coś takiego:

@echo off

echo/"123"|findstr "123" plik.txt>nul&&(goto istnieje)||(goto niema)

:istnieje

echo w pliku znajduje sie ciag: "123"

?

goto :EOF

:niema

echo Brak ciagu: "123" w pliku

goto :EOF

Batch ten na razie tylko informuje mnie czy w pliku.txt występuje ciąg "123" czy nie występuje. Nie wiem co dopisać aby utworzył inny plik tekstowy z usuniętym ciągiem z treści


(Drobok) #4

Musisz użyć pętli do przepisywania i wtedy sprawdzać czy nie przepisujesz ciągu. Nic prostszego mi do głowy nie przychodzi :slight_smile:


(Bobsley82) #5

Możecie mnie trochę chociaż nakierować na ta funkcje przepisywania bo "noga" jestem z programowania.


(Tomek Matz) #6

Czasami warto zerknąć w sieci, czy ktoś już czegoś takiego nie zrobił:

http://www.dostips.com/DtCodeBatchFiles.php#Batch.FindAndReplace


(Bobsley82) #7

Dzięki matzu. Mam tylko problem z rozgryzieniem tego. W którym miejscu wpisać szukany ciąg, a w którym nowy?


(Tomek Matz) #8

W zasadzie wszystko jest wyjaśnione w linku, który podałem. Nawet w kodzie, który wkleiłeś, jest przykład :wink:

Otwierasz wierz poleceń (Uruchom -> cmd), a potem wpisujesz komendę:

FindAndReplace.bat "do zamiany" zamiana StaryPlik.txt

(zakładam, że plik bat nazwałeś FindAndReplace.bat)

Wykonanie tego polecenia spowoduje wyświetlenie wyniku na ekranie konsoli.

Żeby zapisać wyniki w nowym pliku txt (zamiast wyświetlać je na ekranie konsoli), trzeba wykonać następującą komendę:

FindAndReplace.bat "do zamiany" zamiana StaryPlik.txt > NowyPlik.txt

Oczywiście tutaj zakładam, że StaryPlik.txt znajduje się w tym samym katalogu co FindAndReplace.bat. Jeśli tak nie jest, to w miejsce StaryPlik.txt musisz wstawić pełną ścieżkę do pliku. Jeśli w tej ścieżce są spacje, to musi ona zostać umieszczona w podwójnym cudzysłowie.


(Bobsley82) #9

Jestem tobie matzu niezmiernie wdzięczny za pomoc. Chciałbym jeszcze zapytać co należałoby wpisać aby nie zamieniać ciągu a usunąć?


(Drobok) #10

Masz cos, nie chcesz mieć nic więc na co chcesz to coś podmienić ? Jeśli wymyśliłeś odpowiedź to masz tam wpisać :slight_smile: Oczywiście w cudzysłowie, by zachować kolejność kolejnych argumentów :slight_smile:


(Bobsley82) #11

Faktycznie należy użyć "" i wszystko ok :smiley: . Wszystkim jeszcze raz WIELKIE dzięki =D>

temat można zamknąć