Zwracam się do was z pewną prośbą. Otóż potrzebuje programu, który wykona następujące czynności:
1.Utworzy folder o nazwie “Zasoby”
2.Wyszuka na dysku c: wszystkie pliki o rozszerzeniu .txt
Skopiuje go do wcześniej utworzonego folderu zasoby, i zakończy działanie.
Gdy próbowałem wcześniej robić, to program.bat wykonywał 2 pierwsze czynności, ale kompletnie nie udawało mi się skopiować wyszukanych plików. Bardzo proszę aby ktoś podał mi kod z tym programem. Będę bardzo wdzięczny, bo szczerze powiem, że już nie nie mam nerwów do tego,a poza tym mam jeszcze teraz inne obowiązki. Jeszcze raz proszę i z góry dziękuje.
PS: Chciałem zaznaczyć, że mam być on w komendach dosowskich z konsoli cmd, chodzi o programik z rozszerzeniem .bat.
Za wszelkie błędy jakie bym popełnił w opisie przepraszam, ale jest to związane nie znajomością dokładnie tego tematu.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SETLOCAL ENABLEEXTENSIONS
CLS
SET strLocationPath="D:\Zasoby"
SET strLogFilePath="!strLocationPath!\TextFilesCopierLog.txt"
SET /A intCount=0
IF NOT EXIST !strLocationPath! MKDIR !strLocationPath!
IF EXIST !strLogFilePath! DEL !strLogFilePath!
FOR /F "tokens=*" %%i IN ('DIR "C:\*.txt" /S /B') DO (
SET /A intCount = !intCount! + 1
COPY "%%i" !strLocationPath!
ECHO %%i >> !strLogFilePath!
)
ECHO !intCount! >> !strLogFilePath!
Kod trzeba rozbudować o uwzględnienie sytuacji, gdy dany plik w katalogu Zasoby już istnieje.
W pliku TextFilesCopierLog.txt umieszczony zostaje log z kopiowania.
Dzięki wielkie, ale niestety program mi nie działa. Otwiera się konsola, ale nic się, nie dzieje… jest tylko tworzony katalog “Zasoby” Nie wiem, w czym leży problem…
Masz błędy (literówki) w poleceniach. Poza tym copy nie ma przełącznika /h.
Wywołując copy “C:*.txt” “C:\Zasoby” skopiujesz do folderu Zasoby jedynie pliki txt, które znajdują się w katalogu C. W takim podejściu nie uwzględniasz podfolderów.
Jeśli chcesz prostsze rozwiązanie, to możesz użyć polecenia Robocopy http://ss64.com/nt/robocopy.html (choć nie wiem co jest takiego skomplikowanego w tym kodzie co podałem :P). Aby z niego skorzystać musisz mieć Win 7 lub sobie doinstalować ten programik. W linku, który podałem wszystko jest wyjaśnione.
Tutaj masz skróconą wersję kodu, który wrzuciłem wyżej. Wywaliłem z niego tworzenie log-a i czyszczenie ekranu.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SETLOCAL ENABLEEXTENSIONS
SET strLocationPath="D:\Zasoby"
IF NOT EXIST !strLocationPath! MKDIR !strLocationPath!
FOR /F "tokens=*" %%i IN ('DIR "C:\*.txt" /S /B') DO COPY "%%i" !strLocationPath!
Proszę się mi nie dziwić. Dopiero zaczynam przygodę z komendami Dosowskimi:P Wcześniej nigdy nie miałem okazji się tym bawić. Do tej pory pracowałem z poleceniem help. I z tego próbowałem utworzyć ten program, a tam nie ma komend typu:
SETLOCAL ENABLEDELAYEDEXPANSION
SETLOCAL ENABLEEXTEN
SET strLocationPathIF NOT EXIST !strLocationPath! MKDIR !strLocationPath!
FOR /F “tokens=*” %%i INDO COPY “%%i” !strLocationPath!
I tutaj kompletnie jestem zielony. Nie wiem co to są za komendy, co one robią, przełączniki mi nie znany itd.