Witam, poszukuję wskazówek dot. napisania programu, który po podłączeniu pendrive’a do komputera automatycznie skopiuje “odpowiednie” pliki (skrypt uruchamiany automatycznie)
Prosty skrypt w BATCH, który wykrywa czy istnieje folder oraz czy urządzenie jest podłączone
@ECHO OFF
:waitfordevice
TIMEOUT 120
IF EXIST X:\ (
echo Synchronizacja jest rozpoczeta...
goto synchronizuj
) ELSE (
goto waitfordevice
)
:synchronizuj
IF EXIST XX:\XXX (
move XX:\XXX\*.* I:\
echo Synchronizacja zakonczona
goto waitfordevice
) ELSE (
echo File not exists!
goto waitfordevice
)
:debug
pause>nul
goto waitfordevice
Gdzie,
- ,X" zamień na literę pendriva
- ,XX" zamień na dysk, na którym trzymasz pliki do kopiowania
- ,XXX" zamień na nazwę folderu lub lokalizacje gdzie trzymasz pliki do kopiowania
U mnie to wygląda tak:
@ECHO OFF
:waitfordevice
TIMEOUT 120
IF EXIST I:\ (
echo Synchronizacja jest rozpoczeta...
goto synchronizuj
) ELSE (
goto waitfordevice
)
:synchronizuj
IF EXIST D:\Documents\Kopiuj (
move D:\Documents\Kopiuj\*.* I:\
echo Synchronizacja zakonczona
goto waitfordevice
) ELSE (
echo File not exists!
goto waitfordevice
)
:debug
pause>nul
goto waitfordevice
Zalety:
- szybkie kopiowanie
- na dysku skopiowane pliki z katalogu np. Kopiuj znikną, dzięki czemu nie będą nadpisywane
- synchronizacja jest co 2 minuty
- proste do ogarnięcia
- w przypadku braku pendriva rozpocznie się nowe wyszukiwanie po 2 minutach
Wady:
- przy starcie z autostartu wyskakuje cmd, gdzie wykonywany jest skrypt
- małe mulenie komputera
Do skryptu dałem jeszcze :debug, ale to jak chce się rozpocząć wyszukiwanie po dwóch enterach
a gdyby tak skrypt uruchamiał sie w momencie podłączenia pendrive, a ta opcja z synchronizacja bardzo fajna tylko fajnie by było gdyby te operacje odbywały by sie “po cichu”
Jak chcesz cicho to możesz spróbować trochę z tym:
wpis do harmonogramu:
IF EXIST X:\ (start /min X\XX.bat)
gdzie,
- X zamień na literę pendriva
- XX zamień na nazwę pliku z synchronizacją
kod do nowego pliku synchronizacji:
@ECHO OFF
:waitfordevice
IF EXIST XX:\ (
echo Synchronizacja jest rozpoczeta...
goto synchronizuj
) ELSE (
goto waitfordevice
)
:synchronizuj
IF EXIST XX:\XXX\ (
move XX:\XXX\*.* X:\
echo Synchronizacja zakonczona
) ELSE (
echo File not exists!
)
:debug
pause>nul
Gdzie,
- ,X" zamień na literę pendriva
- ,XX" zamień na dysk, na którym trzymasz pliki do kopiowania
- ,XXX" zamień na nazwę folderu lub lokalizacje gdzie trzymasz pliki do kopiowania
Instrukcja:
- Zrób nowy plik synchronizacji na pendrivie
- Stwórz wpis do harmonogramu, który ma wykonać się co minutę i ma kod, który podałem
- Zresetuj komputer
- Opcjonalnie: możesz ukryć plik od synchronizacji
A jak by to wyglądało gdybyśmy czekali na pena który może mieć różne przypisane litery np F,G,H itd ?
Ogólnie sprawa wygląda tak, do komputera dociera pen z którego muszą się skopiować pliki do lokalizacji przykładowo C:\test1 w tym przypadku pendrive dostaje literę F, w przypadku kolejnego sprzętu pendrive dostaje literę H lecz kopiowanie dalej jest do tego samego miejsca czyli C:\test1.
Użyj %CD% z bacha na pendrive, pamiętając że zmienna zwóci aktualną ścieżkę, nie tylko literkę dysku.