windows - qué - descargas fallidas firefox
archivo por lotes para supervisar las adiciones a la carpeta de descarga (2)
:START
cls
set /a Old = 0
set /a New = 0
echo Counting files in folder..
for /f "tokens=*" %%P IN (''dir "C:/Users/..." /A /b'') do (set /a Old += 1)
set Old
:: delay 60 sec
echo Delaying 60 seconds... (drop new file in)
ping 1.1.1.1 -n 1 -w 60000>nul
echo Checking for new files..
for /f "tokens=*" %%P IN (''dir "C:/Users/S..." /A /b'') do (set /a New += 1)
set New
goto COMPARE
:COMPARE
echo Comparing number of files
if %New% gtr %Old% goto NEWF
goto OLDF
:NEWF
echo New File Detected.
echo.
goto START
:OLDF
echo No New Files.
PAUSE
echo Restarting
echo.
goto START
Necesito un archivo por lotes que supervise las adiciones a mi carpeta de Descargas, pero solo nuevas adiciones. Algo como esto:
:START
NumOldFiles = GetNumberOfFilesOld
Delay_30_Seconds
NumNewFiles = GetNumberOfFilesNew
if(NumFilesOld < NumFilesNew)
run_another_batch_file_I_wrote
goto START
else
goto START
No quiero contar las subcarpetas, solo las carpetas y los archivos en el directorio.
He estado mirando esto:
dir "C:/folder" /b/a |find /v /c "::"
pero no sé cómo almacenar este valor y probarlo como <o>.
Tal vez hay una mejor manera de hacerlo, pero no puedo pensar en uno ahora mismo. Tal vez mantener una lista y si la nueva lista tiene un nuevo archivo ejecute el script por lotes, reemplace la lista anterior con la nueva lista, no estoy muy seguro de cómo hacerlo.
Respuesta 1:
El siguiente fragmento debería ayudarlo a avanzar en la dirección correcta. Utiliza dir /b
para obtener una lista de archivos sin procesar y usa fc
(comparación de archivos) para verificar las diferencias entre cada ejecución del cheque.
Puede usar el Programador de tareas para iniciar este archivo por lotes una vez cada x minutos:
@echo off
if not exist c:/OldDir.txt echo. > c:/OldDir.txt
dir /b "d:/My Folder" > c:/NewDir.txt
set equal=no
fc c:/OldDir.txt c:/NewDir.txt | find /i "no differences" > nul && set
equal=yes
copy /y c:/Newdir.txt c:/OldDir.txt > nul
if %equal%==yes goto :eof
rem Your batch file lines go here
Respuesta 2:
Siempre me ha gustado una biblioteca de funciones por lotes de Ritchie Lawrence. Una de esas funciones se llama GetDirStats
.
La función GetDirStats
devuelve la cantidad de archivos, subdirectorios y tamaño total de un directorio especificado. Puede ser útil para referencia futura. Aunque solo está probado en NT4 / 2000 / XP / 2003.
Simplemente cambie compact/s
a compact
para no escanear subcarpetas.