adrianb100 utworzono 15 listopada 2010 utworzono 15 listopada 2010 (edytowane) Witam wszystkich użytkowników. Chciałbym stworzyć "programik", komendę lub jakiś skrót, po kliknięciu którego skopiuje dany plik/pliki do innego folderu. Dokładniej chodzi mi o to, ze przechodząc z jednego komputera na drugi z moim pendrive'm nie musze kopiować kilka plików z różnych folderów i ich szukać tylko za pomocą skrótu kopiuje się to automatycznie.:/ Z góry THX Jestem początkujący na tym forum więc jesli napisałem ten temat w złym miejscu to z góry przepraszam Edytowane 2 lipca 2011 przez benkowik Zły poddział, przenoszę do programowanie
tom300 komentarz 16 listopada 2010 komentarz 16 listopada 2010 (edytowane) Możesz użyć plików BAT. Dla przykładu: [code] copy folder_na_pendrivie\plik1.txt D:\folder_na_dysku\plik1.txt [/code] Zapisz to jako plik bat. Ten kod skopiuje plik1.txt do folder_na_dysku. I w ten sposób wypisujesz pokolei pliki. Jeśli będziesz mieć problemy poszukaj więcej informacji w googlach nt. plików BAT. Edytowane 16 listopada 2010 przez tom3001
adrianb100 komentarz 16 listopada 2010 Autor komentarz 16 listopada 2010 A jeśli chcę skopiować na pendrive pliki znajdujące sie w folderze c:\Document and settings\"użytkownik"\ulubione a na każdym komputerze użytkownik ma inną nazwe. Czy jest jakaś formuła, która zastępuje wszystkie nazwy użytkowników lub cośtakiego że po kliknięciu wyskakuje pole do wprowadzenia nazwy użytkownika i po wprowadzeniu jej sam podstawia pod "użytkownik" daną nazwe profilu.
wojtex5 komentarz 16 listopada 2010 komentarz 16 listopada 2010 (edytowane) poczytaj o zmiennych środowiskowych a dokładniej o wywoływaniu - nazwę użytkownika przechowuje jedna z nich w każdym windowsie i DOSie - jest to zmienna username aby uzyskać wartość zmiennej środowiskowej zapisujesz jej nazwę jako %nazwa_zmiennej%. czyli nie musisz pytać użytkownika o nazwę swojego profilu (chyba że chcesz wysłać pliki z innego konta) wystarczy zrobić coś takiego: [code]copy c:\Document and settings\%username%\ulubione folder_na_pendrivie\plik1.txt[/code] [b]edit: tu powinno zostać poprawione na: [code]copy "c:\Document and settings\%username%\ulubione" folder_na_pendrivie\plik1.txt[/code] bo w nazwie są spacje.[/b] można to jeszcze bardziej skrócić: nie musisz pisać "c:\documents and settings...." - wystarczy zapisać: [code]%userprofile%\Ulubione[/code] bo zmienna userprofile przechowuje całą ścieżkę dostępu do folderu dokumentów aktualnego użytkownika. możesz też tworzyć i zapisywać własne zmienne środowiskowe - wystarczy użyć polecenia set: [b]set[/b] - wyświetla listę : nazwa-zmiennej wartość/ci [b]set zmienna=siema[/b] - ustawia zmienną o nazwie zmienna na wartość "siema" (tekst) [b]set /a x=16/2[/b] - ustawia zmienną do obliczeń arytmetycznych o nazwie x na wartość wykonanego działania - 8 [b]set /p zmienna_z_pauzy=[/b] - umożliwia ustawienie własnej zmiennej, której wartość użytkownik ustala sam przez wpisanie jej z klawiatury [b]echo %zmienna%[/b] - wyświetla zawartość zmiennej o nazwie zmienna wystarczy to zastosować i możesz robić ze zmiennymi (prawie) wszystko czyli jeśli użytkownik by chciał skopiować zawartość folderu ulubione innego użytkownika to możesz właśnie użyć [b]set /p uzytkownik=[/b] i wtedy skopiować wykonując polecenie: [code]copy c:\Document and settings\%uzytkownik%\ulubione jakis_folder_na_pendrive[/code] tylko pozostaje dodatkowa kwestia: musisz poznać literę woluminu i ścieżkę dostępu do katalogu gdzie chcesz wkleić te pliki. tu właśnie chyba tylko się da użyć zmiennej i zapytać użytkownika o folder i literę pendrive'a. (oczywiście jeśli chcesz wszystko robić w batchu - ale moim zdaniem tak jest najwygodniej) możesz to zrobić w C++ (jeśli oczywiście znasz) - sklejasz komendę jako napis i ją wykonujesz funkcją system() z biblioteki <iostream> Edytowane 16 listopada 2010 przez wojtex5
adrianb100 komentarz 16 listopada 2010 Autor komentarz 16 listopada 2010 To jak by wyglądała gotowa formuła kopiowania(xcopy) pliku a.txt znajdującego sie: C:\Documents and Settings\user\Pulpit\a\[b]a.txt[/b] kopiowanego do e:\Gry\ bo nie działa mi ten %userprofile% i nie wiem, może źle coś zrozumiałem z powyższej odpowiedzi. I jeszcze jedno pytanie; jak sie robi spację w tych komendach jako spacje w notatniku, czyli: [b]xxx xxx[/b] czy np: [b]xxx_xxx[/b]
wojtex5 komentarz 16 listopada 2010 komentarz 16 listopada 2010 zależy o co ci chodzi jeśli masz np. w ścieżce dostępu to robisz normalną spację ale całą ścieżkę musisz wziąć w cudzysłowy w zasadzie to do wszystkiego się stosuje gdzie potrzebne są spacje wiesz co - z tym userprofile to może być tak że ja sam dałem taką zmienną jak instalowałem sobie taki emulator terminala z linuxa, ale nie jestem pewnien... wejdź w cmd i wpisz: [code]echo %userprofile%[/code] jeśli wyświetli się ścieżka dostępu do twojego katalogu użytkownika to coś masz źle w skrypcie. PS najlepiej wszystko robić na przykładach a nie suchą teorią - więc dodaj kod (najwyżej później usuniesz)
adrianb100 komentarz 16 listopada 2010 Autor komentarz 16 listopada 2010 no wyświetliłą się ta ścieżka Ja napisze jaka mam ta komenda: start xcopy C:\Documents and Settings\%adrian%\Pulpit\a\a.txt E:\Gry Taka mam i nie działa. Sprawdzałem i ta formułka działa jeśli kupiuje z C:\ bez podkatalogów a później jak pisze podkatalogi to nie działa
wojtex5 komentarz 16 listopada 2010 komentarz 16 listopada 2010 (edytowane) zmienne środowiskowe są po to aby z nich korzystać - tzn. że są po to aby nie trzeba było samemu wpisywać ich wartości (oczywiście poza tymi którymi chcemy - czyli set /p...) zamiast pisać [i]%adrian%[/i] piszesz po prostu: [b]%username%[/b] Windows interpretując polecenie sam zauważy że tam chodzi o zmienną środowiskową i zamiast jej wywołania wstawi jej wartość. pewnie zmyliła Cię ten 2. przykład - ale trzeba czytać uważnie: [quote name='wojtex5' date='16 listopad 2010 - 18:51' timestamp='1289930029' post='1123136'] set /p zmienna_z_pauzy= - umożliwia ustawienie własnej zmiennej, której wartość użytkownik ustala sam przez wpisanie jej z klawiatury [/quote] i [quote name='wojtex5' date='16 listopad 2010 - 18:51' timestamp='1289930029' post='1123136'] czyli jeśli użytkownik by chciał skopiować zawartość folderu ulubione innego użytkownika to możesz właśnie użyć set /p uzytkownik= i wtedy skopiować wykonując polecenie: [code]copy c:\Document and settings\%uzytkownik%\ulubione jakis_folder_na_pendrive[/code] [/quote] poza tym zupełnie niepotrzebne jest "start" które napisałeś - bo ono otwiera nowe okno konsoli a batch i tak uruchamia się w konsoli więc to w sumie w ogóle nie potrzebne. jeśli chodziło o nie-pokazywanie kodu to możesz na samym początku programu dodać: [code]@echo off[/code] wtedy kod nie będzie wyświetlany, a jedynie to co będzie po poleceniu "echo" xcopy to chyba to samo co zwykłe copy tylko że do copy trzeba dorzucić atrybut /s (czyli subdirectory - żeby kopiował razem z podfolderami) Edytowane 16 listopada 2010 przez wojtex5
adrianb100 komentarz 16 listopada 2010 Autor komentarz 16 listopada 2010 (edytowane) Niestety coś z tym username jest nie tak działa mi do podkatalogów ale do momentu użytkownika a mianowicie c:\document and settigns\ pliki z tego podkatalogu da się kopiować w podkatalogu \adrian\ już się nie da chyba że napisze dokładnie c:\"document and settigns"\"adrian"\ ale to nie rozwiązuje problemu z tym użytkownikiem na innym komputerze.:/ Nie wiem te procenty jakoś to psują bo jak wpisuje w cudzysłowie to działa ale to tylko na moim komputerze i jeszcze pytanie jaka komenda zeby skopiował wszystko nie tylko pliki ale też foldery Edytowane 16 listopada 2010 przez adrianb100
wojtex5 komentarz 16 listopada 2010 komentarz 16 listopada 2010 chodzi o to, że [b]CAŁĄ[/b] ścieżkę dostępu masz wziąć w cudzysłowie pokaż kod to zobaczymy, bo na sucho wszystkiego się nie da zrozumieć.
adrianb100 komentarz 16 listopada 2010 Autor komentarz 16 listopada 2010 copy C:\"Documents and Settings"\"adrian"\ad.txt jeśli pod adrian dam %username% to nie działa a jak normalnie wpisana nazw ato działa więc musi coś być od tego %username% a jak kopiować cały katalog i podkatalogi to jak
wojtex5 komentarz 16 listopada 2010 komentarz 16 listopada 2010 (edytowane) dobra sprawdziłem u siebie - masz rację... wywala mi "nie można odnaleźć określonego pliku" czy coś takiego. baaaaardzo dziwne wiesz co? zrób na sztywno: [code] @echo off cd %userprofile% xcopy ulubione E:\Gry /S /E pause [/code] ten batch skopiuje ci wszystko z folderu użytkownika "ulubione" do E:\Gry (podkatalogi, pliki w nich itd. a nawet puste katalogi) TAKI SPOSÓB U MNIE DZIAŁA na 100% [b]edit:[/b] udało mi się przełamać DOSa - napisałem poprawny co robi to samo ale bez wchodzenia do folderu: [code]@echo off xcopy "%userprofile%\ulubione" "E:\Gry" /S /E pause[/code] po prostu zawinił brak cudzysłowów jeśli chcesz kopiować i nadpisywać wszystkie dopisz do linijki kopiującej na końcu po spacji: [code]/-Y[/code] Edytowane 16 listopada 2010 przez wojtex5
adrianb100 komentarz 17 listopada 2010 Autor komentarz 17 listopada 2010 (edytowane) Teraz działa. THX za pomoc A jeszcze jedno pytanie. bo jak sie usuwa komendą del to on w cmd sie pyta czy napewno i czy wszystkie czy można zrobić tak żeby z danego folderu powiedzmy E:\Gry\ usunął wszystkie foldery podfoldery i pliki bez pytania sie o to czy aby napewno chce wykonać te operacje i czy dla wszystkich znajdujących się tam "rzeczy"?? Edytowane 17 listopada 2010 przez adrianb100
wojtex5 komentarz 18 listopada 2010 komentarz 18 listopada 2010 to dorzuć takie coś: [code]cd E:\Gry for %%x in (*) do del %%x /f /s /q | echo T for %%y in (*) do rm %%y /F /S /Q |echo T[/code] robisz to pętlą for - * oznacza że przy każdym obrocie pętli %%x będzie pobierał nazwę kolejnego pliku (nie folderu) i go usuwał bez potwierdzenia (|echo T to zabezpieczenie na wypadek nie zadziałania /Q). do folderów jest druga pętla - tutaj jest podobnie ale zamiast del używasz rm (remove directory) i %%y będzie pobierał nazwy katalogow (chyba) (sprawdzę w domu działanie bo aktualnie piszę ze szkoły)
adrianb100 komentarz 18 listopada 2010 Autor komentarz 18 listopada 2010 (edytowane) Teraz sprawdziłem i nie usuwa wszystkiego. usuwa 100% plików txt pliki exe a pliki mp3 zostały Edytowane 18 listopada 2010 przez adrianb100
wojtex5 komentarz 18 listopada 2010 komentarz 18 listopada 2010 (edytowane) dobra mój błąd zapomniałem że w nazwie może być spacja więc zamiast samego %%x (%%y) musi być "%%x" ("%%y"), czyli poprawiony kod powinien być taki: [code]cd E:\Gry for %%x in (*) do del "%%x" /f /s /q | echo T for %%y in (*) do rm "%%y" /F /S /Q |echo T[/code] Edytowane 18 listopada 2010 przez wojtex5
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.