Hola
me gustaría saber si hay alguna forma de hacer un script, para enviar cada archivo que se almacene en una carpeta sin pulsar ningún script.
me explico, tengo un escaner usb y quiero que cada vez escanee una imagen que me la reenvie automaticamente (sin necesidad de pulsar con el ratón un script) a otra carpeta del pc.
¿existe?
si me podeís ayudar os lo agradecería, un saludo.
simplemente tienes que hacer un bucle infinito donde cada x tiempo compruebe si la carpeta esta vacía y si no lo esta que mueva su contenido a la otra carpeta.
...O bien puedes usar software profesional -> Directory Monitor (http://www.brutaldev.com/page/Directory-Monitor)
Saludos
Pensé que con un simple .bat sería suficiente, existe alternativa al programa 'Direcotry monitor'.
Tengo un script que renombra los jpg con fecha/hora y mueve de 'unidad scaner usb' a un directorio de c, pero necesito que se haga automático, no quiero pulsar 'botón script'. Quiero que al escanear la imagen la propia script verifique que hay un archivo jpg -- renombre y mueva a otra carpeta.
Tengo esta parte de código, ahora solo me hace falta que lo haga solo :D
escanear y olvidarse
@echo off
For %%F in (".\*.jpg") Do (
Call Ren "%%~fF" "%%date:/=-%%, %%time::=.%%.jpg"
Call :Sleep 5 & REM Milliseconds
move IMG_****.jpg "C:\archivo\"
)
Arriba ya te han comentado lo que debes hacer, pero además yo te lo he puesto más fácil con Directoy monitor que precísamente esa es su función, monitorizar los cambios en un directorio y ejecutar un script o una acción a realizar.
Te escribo un ejemplo de como hacerlo usando Batch:
@Echo OFF
:Monitor_Loop
If Exist "%TEMP%\FileList.tmp" (
Dir /B /A-D > "%TEMP%\FileListNew.tmp"
Echo N | Comp "%TEMP%\FileList.tmp" "%TEMP%\FileListNew.tmp" 2>NUL || (
Echo Se han encontrado cambios de archivos en el directorio.
Call :FileOp
)
MOVE /Y "%TEMP%\FileListNew.tmp" "%TEMP%\FileList.tmp" 1>NUL
) ELSE (
Dir /B /A-D > "%TEMP%\FileList.tmp"
)
Ping -n 5 LOCALHOST 1>NUL
GOTO :Monitor_Loop
:FileOp
For %%# in ("*") Do (Echo "%%~#")
GOTO:EOF
El script comprueba cambios en un directorio, esto significa tanto archivos añadidos como eliminados, si quieres puedes perfeccionarlo usando FOR y/o FORFILES para monitorizar únicamente los nuevos archivos agregados, según la fecha de creación de los archivos.
PD: Óbviamente debes mantener en ejecución el script mientras estés en tu equipo, escaneando.
en vez de Ping -n 5 LOCALHOST 1>NUL
por que no usar CHOICE /T 5 /C ync /CS /D y
Básicamente porque le estás dando una funcionalidad incorrecta al comando CHOICE, Choice no sirve para temporizador, si el usuario elige una de las opcioens se detiene el tiempo.
Como ya sabes ping tampoco es un temporizador, pero es la única solucion efectiva en Batch a falta de una verdadera función de "Sleep"...
...A menos que el usuario disponga de Windows 7 u 8 donde aquí podemos usar el comando TIMEOUT y olvidarnos de los otros comandos:
TIMEOUT /T 5
Saludos
OK, lo digo por que entre las dos alternativas que no sirven para ello no sabia cual escoger
No sabia lo del timeout.
@Echo OFF
:Monitor_Loop
If Exist "%TEMP%\FileList.tmp" (
Dir /B /A-D > "%TEMP%\FileListNew.tmp"
Echo N | Comp "%TEMP%\FileList.tmp" "%TEMP%\FileListNew.tmp" 2>NUL || (
Echo Se han encontrado cambios de archivos en el directorio.
Call :FileOp
)
MOVE /Y "%TEMP%\FileListNew.tmp" "%TEMP%\FileList.tmp" 1>NUL
) ELSE (
Dir /B /A-D > "%TEMP%\FileList.tmp"
)
Ping -n 5 LOCALHOST 1>NUL
GOTO :Monitor_Loop
:FileOp
For %%# in ("*") Do (Echo "%%~#")
For %%F in (".\*.jpg") Do (
Call Ren "%%~fF" "%%date:/=-%%, %%time::=.%%.jpg"
Call :Sleep 5 & REM Milliseconds
move IMG_****.jpg "C:\archivo\"
)
GOTO:EOF
esta bien eso que pongo?
Cita de: bela lugosi en 21 Agosto 2013, 19:07 PM
esta bien eso que pongo?
Nope, no hay ninguna etiqueta en el código que se llame ":Sleep"
corrige esta línea:
Call :Sleep 5
El directory monitor me funciona perfectamente.
Pero con el script no me sale, he modificado así?, se me queda en un bucle y me aun así tendría que iniciar yo el script.
@Echo OFF
:Monitor_Loop
If Exist "%TEMP%\FileList.tmp" (
Dir /B /A-D > "%TEMP%\FileListNew.tmp"
Echo N | Comp "%TEMP%\FileList.tmp" "%TEMP%\FileListNew.tmp" 2>NUL || (
Echo Se han encontrado cambios de archivos en el directorio.
Call :FileOp
)
MOVE /Y "%TEMP%\FileListNew.tmp" "%TEMP%\FileList.tmp" 1>NUL
) ELSE (
Dir /B /A-D > "%TEMP%\FileList.tmp"
)
Ping -n 5 LOCALHOST 1>NUL
GOTO :Monitor_Loop
:FileOp
For %%# in ("*") Do (Echo "%%~#")
For %%F in (".\*.jpg") Do (
Call Ren "%%~fF" "%%date:/=-%%, %%time::=.%%.jpg"
move IMG_****.jpg "C:\archivo\"
)
GOTO:EOF