2 votes

Pour déplacer un fichier txt d'un dossier à un autre s'il dépasse une certaine limite de taille .

Comment déplacer un fichier txt d'un dossier à un autre s'il franchit une certaine limite de taille, disons de 1 Mo. Je veux un fichier batch pour pouvoir le programmer quotidiennement, car je le fais pour un grand nombre de fichiers à la fois.

J'ai trouvé certains codes dans ce forum mais j'ai besoin d'aide pour ajouter la condition que j'ai mentionnée. Vous pouvez m'aider ?

Code que j'ai trouvé :

 @echo off
  set src_folder=c:\whatever\
  set dst_folder=c:\foo
  FOR /F "delims=" %%a IN (input.txt) DO COPY "%%a" "%destfolder%\%%~nxa"

0voto

Magoo Points 22274
FOR /F "delims=" %%a IN (input.txt) DO if %%~za gtr 1048576 MOVE "%%a" "%destfolder%\%%~nxa"

devrait faire ce que vous demandez. %%~za renvoie la longueur de %%a . MOVE déplace le fichier alors que COPY le copie, il suffit donc d'exécuter la commande COPY à chaque invocation.

0voto

npocmaka Points 7794
@echo off
  set src_folder=c:\whatever\
  set dst_folder=c:\foo
  set /a max_size_in_mb=1
  set /a max_size=%max_size_in_mb%*1048576 
  FOR /F "delims=" %%a IN (input.txt) DO (
     echo size is %%~za bytes 
     rem this is in 1mb case
     if %%~za GEQ %max_size% move /Y "%%a" "%destfolder%\%%~nxa"
 )

0voto

joojaa Points 2194

Si les données sont réellement précieuses, utilisez robocopy au lieu de copier ou déplacer (déplacer peut être plus rapide sur un disque local). L'une des choses robocopy est de s'assurer qu'aucune suppression n'a lieu tant que la copie n'est pas réussie, il est également très résilient aux problèmes de disques en réseau. Robocopy possède également de nombreuses fonctionnalités supplémentaires telles que la vérification périodique des modifications du dossier, la garantie que les horodatages ne changent pas, la sélection basée sur l'âge, etc... L'une des fonctionnalités est de copier uniquement en fonction de la taille de votre fichier ( /min ou même /max si vous en avez envie). C'est exactement le genre de scénario robocopy était destiné à gérer.

@echo off
set src_folder=c:\whatever\
set dst_folder=c:\foo
robocopy src_folder dst_folder /mov /min:1048576

Le site /movie déplace les fichiers (ou les supprime une fois qu'ils ont été copiés et éventuellement vérifiés pour les erreurs de copie si vous le souhaitez) une fois que c'est fait. Robocopy sait également comment gérer des dossiers entiers avec la fonction /déplacement drapeau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X