Automatyczne kopiowanie pliku/-ów na pendrive

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:

  1. Zrób nowy plik synchronizacji na pendrivie
  2. Stwórz wpis do harmonogramu, który ma wykonać się co minutę i ma kod, który podałem
  3. Zresetuj komputer
  4. Opcjonalnie: możesz ukryć plik od synchronizacji

Leci Filmik Jak to wszystko od początku do końca ogarnąć : 

http://adshort.pl/adfly/r

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.