kukigr utworzono 6 czerwca 2018 utworzono 6 czerwca 2018 Witam Znalazłem programik, który przenosi zdjęcia do odpowiednich katalogów po nazwie zdjęcia. lista zdjęć 2015_07_12 22_05_09_0006.jpg 2015_09_25 17_50_53_0007.jpg 2016_06_25 12_31_46_0013.JPG 2017_07_23 10_07_09_0008.jpg 2017_07_23 10_07_13_0009.jpg 2017_07_23 10_07_26_0010.jpg 2017_07_27 15_51_34_0011.jpg 2017_07_27 15_51_45_0012.jpg Wszystko gra, tylko w przypadku jak będzie próba przeniesienia pliku (zdjęcia) do katalogu w którym znajduje się plik o takiej samej nazwie (mało prawdopodobne ale możliwe), to programik mi go nadpisze bez komunikatu. 2015_07_12 2015_07_12 22_05_09_0006.jpg 2015_09_25 2015_09_25 17_50_53_0007.jpg 2016_06_25 2016_06_25 12_31_46_0013.JPG <- przykładowo jeśli w takim katalogu już był plik o tej nazwie (niekoniecznie ta sama zawartość zdjęcia) to zostanie ono nadpisane nowym plikiem 2017_07_23 2017_07_23 10_07_09_0008.jpg 2017_07_23 10_07_13_0009.jpg 2017_07_23 10_07_26_0010.jpg 2017_07_27 2017_07_27 15_51_34_0011.jpg 2017_07_27 15_51_45_0012.jpg Moje pytanie jak zabezpieczyć się przed nadpisaniem pliku przy przenoszeniu ta linia programu ->> move "%%A" "!folname!" / zmień nazwę pliku jeśli w tym katalogu już istnieje plik o tej samej nazwie. podaj komunikat o przeniesieniu z nową nazwą (stara_nazwa_pliku + "_nr_001" ) ---------------------------------------------------------------- @echo off setlocal enabledelayedexpansion for %%A in (*.psd *.jpg) do ( echo file found %%A for /f "delims=" %%B in ("%%A") do set fname=%%~nB for /f "delims=" %%C in ("%%A") do set fextn=%%~xC for /f "tokens=1* delims= " %%D in ("!fname!") do set folname=%%D echo folder name !folname! if not exist "!folname!" ( echo Folder !folname! does not exist, creating md "!folname!" ) else ( echo Folder !folname! exists ) echo Moving file %%A to folder !folname! move "%%A" "!folname!" ) echo Finished pause
Dark_Moon komentarz 6 czerwca 2018 komentarz 6 czerwca 2018 Po prostu latwiej bedzie nie uzywac tego "programu" a zamiast tego uzyc Total Commander. Zrobisz to samo a program zawsze cie ostrzeze i bedzies mial opcje zmiany nazwy. Bedziesz mogl takze porownac pliki wg zawartosci binarnej czy sa takie same. Oprocz tego istnieja programy darmowe ktore takie rzeczy robia maja mnostwo opcji nie rozumiem po co sie meczyc z takim prymitywnym programem. Pozniej podesle link do takigo programu.
kukigr komentarz 6 czerwca 2018 Autor komentarz 6 czerwca 2018 Teraz, Dark_Moon napisał: Po prostu latwiej bedzie nie uzywac tego "programu" a zamiast tego uzyc Total Commander. Zrobisz to samo a program zawsze cie ostrzeze i bedzies mial opcje zmiany nazwy. Bedziesz mogl takze porownac pliki wg zawartosci binarnej czy sa takie same. Oprocz tego istnieja programy darmowe ktore takie rzeczy robia maja mnostwo opcji nie rozumiem po co sie meczyc z takim prymitywnym programem. Pozniej podesle link do takigo programu. Mam Total Commander i używam go. Jednak nie wiem w jaki sposób Total Commander mógłby mi automatycznie ze "sterty" plików poprzenosić pliki np o nazwie: "2015_07_12 22_05_09_0006.jpg" do katalogu, który jeszcze nie istnieje, a w tej sytuacji trzeba go założyć o nazwie "2015_07_12" z części nazwy pliku. Jeśli wiesz jak to zrobić to proszę o pełną instrukcję.
Dark_Moon komentarz 6 czerwca 2018 komentarz 6 czerwca 2018 Recznie. Kopiujesz czesc nazwy pliku wklejasz jako nazwe przy poleceniu utworz katalog. Nastepnie segregujesz pliki wg nazwy zaznaczasz wszystkie o tej nazwie co chcesz i przenosisz. Albo w wyszukiwaniu plikow wpisujesz 2015_07_12*.jpg TC znajduje wszystkie pliki z tego dnia. Gwiazdka oznacza ze dalsza czesc nazwy moze byc dowolna wiec obojetnie jaka by to nie byla godzina TC znajdzie wszystkie pliki z tego dnia. I ze wszystkich katalogow a nie tylko z jednego. Musisz wszystkie katalogi umiescic w okienku do wyszukiwania. Przenosisz i tyle. Nie martwisz sie czy ten skrypt jest dobrze napisany czy nie bo TC cie ostrzeze jezeli to bedzie ta sama nazwa. Takich skryptow to sie kiedys uzywalo w czasach jak jeszcze byli ludzie ktorzy je potrafili poprawnie napisac.
kukigr komentarz 6 czerwca 2018 Autor komentarz 6 czerwca 2018 No tak to jak robiłem przed tym programikiem. Zajmuje mi to sporo czasu bo mam do posortowania zdjęć z kilkunastu lat. Więc ręcznie tego już mi się nie chce robić.
Raciawelli komentarz 6 czerwca 2018 komentarz 6 czerwca 2018 możesz po prostu dodać if sprawdzający, czy w podanej lokalizacji istnieje już plik nazwie takiej samej jak plik który chcesz przenieść i jeśli istnieje użyć rename a dopiero potem przenieść plik.
kukigr komentarz 6 czerwca 2018 Autor komentarz 6 czerwca 2018 29 minut temu, Raciawelli napisał: możesz po prostu dodać if sprawdzający, czy w podanej lokalizacji istnieje już plik nazwie takiej samej jak plik który chcesz przenieść i jeśli istnieje użyć rename a dopiero potem przenieść plik. No i o to mi chodzi tylko jak to napisać?
Dark_Moon komentarz 6 czerwca 2018 komentarz 6 czerwca 2018 Możesz to też zrobić tym programem, który posiadasz bez unowocześniania go. Skopiuj sobie wszystkie pliki, które chcesz przenieść za pomocą tego programu do innego katalogu jako te, które nie będą ruszane. Po prostu zrób ich kopię zapasową. Następnie użyj tego twojego programu i przenieś wszystkie pliki. Jak już wszystko poukładasz porównaj ilość plików w kopii zapasowej z tymi które poukładał ten program. Jak ilość będzie się zgadzać to nic nie zostało nadpisane. Jak w kopi zapasowej będziesz miał więcej to policzysz ile ci brakuje i je znajdziesz, porównasz co jest nie tak zmienisz nazwę i dodasz z kopi zapasowej. No już prościej się nie da chyba. Poniżej program, który potrafi znaleźć oryginalną datę zrobienia zdjęcia a nie datę zapisania pliku na dysku. https://www.xnview.com/en/xnview/#downloads Tam poniżej tych cen są opcje pobrania za darmo. A tutaj jak to zrobić http://www.komputerswiat.pl/poradniki/programy/xnview/2011/03/data-zrobienia-zdjecia-jako-nazwa-pliku.aspx Być może to znasz ale podałem, bo to ciekawy program.
kukigr komentarz 6 czerwca 2018 Autor komentarz 6 czerwca 2018 (edytowane) Zdjęcia właśnie przerabiam programem ale irfanView-em. Ma on opcje przetwarzania wsadowego gdzie podajesz $E36867_#### a w wyniku otrzymujesz nazwę pliku z daty utworzenia zdjęcia właśnie w postaci "2017_07_23 10_07_09_0008.jpg" Gdyby dodać datę wykonania czynności (choćby czas w postaci 12:27:14 -> 122714) do tej daty to nie było by w ogóle problemu, bo nigdy nie będzie pliku o takiej samej nazwie. Po prostu potrzebuję dodać pętlę w tym programiku by sprawdzała czy istnieje taki plik w katalogu przed jego przeniesieniem. Jeśli tak to dodaj cokolwiek (jakiś znaczek literę) i przenieś nowy plik. O takie "zabezpieczenie" mi chodzi.
Raciawelli komentarz 6 czerwca 2018 komentarz 6 czerwca 2018 Ostatni raz bawiłem się w takie rzeczy wieki temu. cd "!folname!" //przenosimy się do folderu, którego zawartość sprawdzamy if not exist "%%A" //czy plik istnieje ( cd.. //jeśli nie, wracamy do poprzedniego folderu i przenosimy plik normalnie echo Moving file %%A to folder !folname! move "%%A" "!folname!" ) else ( rename "%%A" "%%A (2)" //jeśli istnieje, zmieniamy nazwę cd.. echo Moving file %%A to folder !folname! move "%%A" "!folname!" )
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.