Un script batch pour les gouverner tous

Envie d’un script batch capable de copier / déplacer / sauvegarder des dossiers, de traiter tous vos fichiers multimédia, de vous envoyer des mails de rapport ? Suivez le guide…

Voici un script batch, développé par l’ami Cautex : cp.bat permet de copier / déplacer / sauvegarder des fichiers et des répertoires.

En plus d’être très complet en terme de manipulations et sauvegardes de répertoires, cp.bat peut aussi travailler avec des fichiers images, audios et vidéos.

cp.bat génère des rapports des tâches qu’il effectue et peut même vous les envoyer par mail.

Se procurer cp.bat

Le développeur présente cp.bat sur ce topic (inscription nécessaire). Prenez-le comme le fil d’info officiel du projet.

Cp.bat est un script que nous pouvons qualifier de logiciel : il dispose d’un installeur qui intègre le script à votre environnement Windows. Vous pouvez utiliser la commande « cp ».

software Installez cp.bat par ici

Les modes d’utilisations

Warning_iconAvant toute chose, utilisez cp.bat en mode administrateur ou désactivez  le contrôle de compte utilisateur.

cp.bat est utilisable en 5 modes :

  1. Copie de répertoire
  2. Déplacement de répertoire
  3. Sauvegarde de répertoire
  4. Traitement d’images
  5. Traitement audio / vidéo

Le script offre une documentation complète et des fonctions générales avec les commandes suivantes :

cp /? => Aide générale (par défaut lorsque cp est appelé sans paramètres)
cp /1 => Aide sur les modes 1, 2, 3 et 4
cp /2 => Aide sur le mode 5
cp /af => Aide sur les options d’affichages
cp /ra => Aide sur les options de rapport
cp /au => Aide sur les autres options
cp /ex => Affiche des commandes d’exemples
cp /maj => vérifie les mises à jour
cp /conf => permet de créer un fichier de configuration par défaut
cp /m => modifie l’installation du script

Copie et déplacement de répertoires

cp "c:\photos" "c:\photos_copie"

screen copie

Par défaut le programme copie un dossier vers un autre en respectant l’arborescence. Une barre de progression est affichée.

Afin d’avoir aussi une barre de progression par fichier, utilisez le paramètre –q-XXX (replacez XXX par une taille minimum de fichiers en Mo).

Exemple :

cp "c:\logiciels" "e:\" --q-1

Pour tous les fichiers de plus d’1Mo, cp.bat affichera alors une seconde barre de progression propre au fichier :

screen progressbar 2

Pour effectuer un déplacement au lieu d’une copie, utilisez le paramètre -mode-2.

Voici les paramètres des modes copie et déplacement :

-mode copie :
	-mode-copie-nb
		nb désigne le mode de copie:
		0=passer les fichiers existant
		1=toujours remplacer les fichiers existants
		2=remplacer les fichiers si la source est différente
		3=remplacer les fichiers si la source est plus récente
		[0]=état par défaut
	-purge-nb
		nb désigne le mode pour la purge des fichiers cibles inexistants dans la source.
		0=désactivé; 1=activé
		[0]=état par défaut
-mode déplacement :
	--f-o/n
		oui/non désigne si les fichiers seront écrasés.
		[non]=état par défaut
	--s-o/n
		oui/non désigne si il faut supprimer l'arborescence des dossiers sources si il n'y a pas eu d'erreur.
		[non]=état par défaut

Sauvegarde différentielle et incrémentielle

N’hésitez pas à vous faire un rappel sur les sauvegardes complètes, différentielles et incrémentielles :

La première sauvegarde en mode 3 sera une sauvegarde complète :

cp "c:\photos" "c:\photos_sauvegarde" -mode-3

Le script génère un rapport à la fin de la sauvegarde :

screen sauvegarde full

Un dossier « Sauvegarde Complète » daté est créé dans le dossier de destination.

La deuxième sauvegarde est incrémentielle ou différentielle selon votre choix, un rapport est généré :

screen sauvegarde incrementielle

Nous constatons que les fichiers qui n’ont pas été modifiés depuis la dernière sauvegarde ne sont pas sauvegardés.

Comme pour la sauvegarde complète, un dossier daté est créé.

En l’état, le script peut être utilisé en tant que tâche planifiée pour établir un plan de sauvegarde fiable.

Cp.bat est aussi capable d’envoyer des rapports par mail. J’y reviendrais plus tard.

Voici les paramètres des modes de sauvegardes :

-mode sauvegarde :
	-mode-sauv-nb
		nb désigne le type de sauvegarde. 1=incrémentielle; 2=différentielle
		[incrémentielle]=état par défaut
	-nb-sauv-nb
		nb désigne le nombre de sauvegardes incrémentielles existantes qui déclenchent l'archivage de la sauvegarde.
		[10]=état par défaut
	-purge-archive-o/n
		purge des archives avant l'archivage
		[non]=état par défaut
	-aa-nb
		nb désigne le mode pour la purge des dossiers d'archive.
		0=inactif; 1=actif sur date de création; 2=actif sur date de
		modification des dossiers d'archives et de sauvegardes.
		[0]=état par défaut
	-ab-nb
		nb designe l'anciennetée des dossiers en jours pour la purge [-aa-nb].
		[60]=état par défaut
	-ac-o/n
		Forcer la création du dossier de sauvegarde intermédiaire.
		[oui]=état par défaut

Traitement d’images

Le traitement d’images par lots permet de modifier la taille, la compression et les dimensions des images d’un dossier.

Le script utilise des programmes tiers pour exécuter les commandes de traitement d’images. Lors de la première utilisation, les fichiers (4 au total) sont automatiquement téléchargés.

screen maj fichiers image

La progression est affichée par fichier et un rapport est généré à la fin du traitement.

screen compress img 1

Les proportions données en paramètres sont respectées. Le script est très pratique afin de compresser des photos pour les envoyer par mail.

Voici les paramètres du mode de traitement d’image :

-mode traitement d'images :
	-extention-ch
		ch=extention souhaitée pour la conversion des images [ex=.jpg]
		[]=état par défaut
	-dmax-larg-nb
		nb=largeur max en pixel
		[1920]=état par défaut
	-dmax-haut-nb
		nb=hauteur max en pixel
		[1080]=état par défaut
	-taille-max-nb
		nb=taille max en Ko
		[1000]=état par défaut
	-compress-nb
		nb=pourcentage de compression
		[70]=état par défaut
	-relance-nb
		nb=nombre de relance de compression si la photo n'est pas dessendue en dessous de taille_max
		[2]=état par défaut
	-baisse-nb
		nb=baisse du taux de compression à chaque relance de compression en %
		[15]=état par défaut
	-img-filtre-ch
		ch=filtre de la commande findstr sur le chemin complet du fichier
		[ex: \nom.*du.*dossier]
		[.]=état par défaut

Traitement audio / vidéo

Le mode de traitement de vidéo est très complet et très personnalisable. Vous pouvez convertir une vidéo ou un fichier audio, vous pouvez extraire le son d’une vidéo.

Le script est basé sur ffmpeg, la compatibilité avec de nombreux formats vidéos est donc assurée.

screen ffmpeg

Pour convertir une vidéo ou un fichier audio, indiquez l’extension de sortie avec le paramètre -ext-ch (remplacez ch par l’extension précédée d’un point).

Afin d’extraire seulement la vidéo ou l’audio d’un fichier multimédia, utilisez les paramètres -an pour désactiver l’audio ou -vn pour désactiver la vidéo.

Un premier exemple avec une conversion en .avi d’une vidéo .mp4 :

cp "c:\clip" "c:\clip2" -mode-5 -ext-.avi

screen conversion video

 

Un second exemple avec l’extraction audio (.mp3 320Kbit/s) d’une vidéo en .mp4 :

cp "c:\clip" "c:\clip2" -mode-5 -ext-.mp3 -vn -audiob-320

Le paramètre -vn supprime la vidéo et le paramètre -audiob-320 désigne le bitrate audio (320 Kbit/s dans notre cas).

screen extraction audio

Voici la liste des paramètres du mode traitement audio / vidéo que vous pouvez retrouver avec la commande cp /2 :

-mode traitement audio/video :
	-ext-ch
		ch désigne l'extension de sortie.
		audio=.mp3, .m4a, .ogg, .wav, .wma, .ac3
		video=.avi, .wmv, .mov, .xvid [avi], .mp4, .flv
		[.mp4]=état par défaut
	-mode-av-nb
		nb designe le mode de traitement.
		1=passer quand le fichier existe; 2=toujour écraser.
		[1]=état par défaut
-options audio:
	-an
		désactivation de l'audio.
	-audiob-ch
		ch désigne le flux audio en kbit/s.
		valeurs conseillées=64k, 112k, 128k, 160k, 192k
		[0]=état par défaut
	-audioc-nb
		nb désigne le nombre de cannaux. 1=mono; 2=stereo
		[0]=état par défaut
	-af-nb
		nb désigne la frequence audio
		valeurs conseillées=22050, 44100, 48000
		[0]=état par défaut
	-aq-%
		% désigne la qualité audio en pourcentage.
		[0]=état par défaut
	-vol-nb
		nb désigne le volume.
		volume courant=256, double=512, moitié=128
		[0]=état par défaut
	-async-nb
		nb désigne l'intervalle de syncronisation audio en secondes.
		[0]=état par défaut
-options video:
	-vn
		désactivation de la vidéo.
	-videob-ch
		ch designe le flux video en kbit/s.
		valeurs conseillées=56k, 300k, 1000k, 1200k, 1250k, 1500k
		[0]=état par défaut
	-size-ch
		ch désigne la résolution en pixels
		valeurs conseillées:
		1.2222=176x144,352x288,704x576
		1.25  =2560x2048,5120x4096
		4:3; 1.3333=128x96,160x120,320x240,640x480,800x600,1024x768,1600x1200, 2048x1536,1280x1024
		1.5625=1600x1024,3200x2048,6400x4096
		1.6   =1920x1200,2560x1600,3840x2400,7680x4800,320x200
		1.775 =852x480
		16:9;1.7777=1280x720,1920x1080
		1.7786=1366x768
		1.8286=640x350
		[0]=état par défaut
	-fps-ch
		ch désigne le taux d'images/seconde.
		valeurs conseillées=24, 25, 29.97
		[0]=état par défaut
	-aspect-ch
		ch désigne l'aspect de la video.
		valeurs conseillées=4:3,16:9
		[0]=état par défaut
	-rogn-haut-nb
		nb désigne le rognage haut en pixel.
		[0]=état par défaut
	-rogn-bas-nb
		nb désigne le rognage bas en pixel.
		[0]=état par défaut
	-rogn-ga-nb
		nb désigne le rognage gauche en pixel.
		[0]=état par défaut
	-rogn-dr-nb
		nb désigne le rognage droite en pixel.
		[0]=état par défaut
	-maxrate-ch
		ch désigne le bitrate max en kbits [ex=4000k]
		Option -bufsize- obligatoire. Extension .m2v conseillée
		[0]=état par défaut
	-minrate-ch
		ch désigne le bitrate min en kbits [ex=4000k]
		Option -bufsize- obligatoire. Extension .m2v conseillée
		[0]=état par défaut
	-bufsize-ch
		ch désigne la taille du tampon vérificateur en kbits [ex=2000k]
		[0]=état par défaut
-autre:
	-start-ch
		ch désigne le temps de départ sur la source.
		format=hh:mm:ss
		[0]=état par défaut
	-dure-ch
		ch désigne la durée de traitement sur la source.
		format=hh:mm:ss
		[0]=état par défaut
	-av_par-ch
		ch désigne les paramettres pour ffmpeg.exe
		[ffmpeg.exe source %-av_par-% destination%.ext%]
		désactive toutes les options et passe en "mode manuel".
	-proc-nb
		nb désigne le nombre de coeurs pour la conversion.
		[0]=état par défaut

Une documentation complète de ffmpeg est disponible sur http://ffmpeg.org/ffmpeg.html.

Un petit peu de configuration

Cp.bat utilise un fichier de configuration qu’il n’est pas nécessaire de modifier pour une utilisation minime.

Dans le cas contraire, tapez « cp /conf » afin de créer un fichier de configuration.

Vous pouvez placer votre fichier où vous le souhaitez :

screen conf

Une fois que le fichier est créé, vous pouvez le modifier à votre guise avec n’importe quel éditeur de texte.

Rapport par mail

Cp.bat est capable de vous envoyer un rapport par mail pour n’importe quelle tâche qu’il exécute.

Renseignez les identifiants de votre serveur SMTP dans votre fichier de configuration :

::CONFIGURATION MAIL
::serveur smtp
set serveur_smtp=XXXXXX
::port smtp
set port_smtp=XXXX
::identifiant du compte de messagerie utilisé pour l'envoi du rapport
set identifiant=XXXXXX
::mot de passe du compte de messagerie utilisé pour l'envoi du rapport
set mot_de_passe=XXXXX
::SSL activé=True ;SSL désactivé=False
set SSL=True
::email source
set email_source=XXXXXX
::Sujet du message
set sujet=Rapport

puce_informationPetite astuce : Vous pouvez utiliser le service SMTP de votre hébergeur de mails.
Par ici pour une adresse gmail.

Utilisez la commande « cp /email XXX » (remplacez XXX par votre adresse mail) pour tester l’envoi. En cas d’erreur, vérifiez vos paramètres SMTP.

Lorsque vos paramètres sont correctement configurés, vous pouvez utiliser l’option -ma-XXX (replacez XXX par une ou plusieurs adresses mails séparées par des virgules) pour chacun des mode de cp.bat.

Un exemple en mode copie (un fichier de destination existe déjà dans l’exemple) :

cp "c:\logiciels" "e:\" "--ma-contact@tfrichet.fr"

screen mail

Le rapport par mail est aussi complet que le rapport affiché lors de l’exécution, il contient d’autres informations comme la date et l’heure de l’exécution, ainsi que le nom de la machine (pratique dans le cas d’une exécution planifiée sur plusieurs machines).

==[11/05/2013]==RAPPORT===[21h42]======
durée: 2 Secondes 54 Centièmes
dossier source=c:\logiciels
dossier cible=e:\
PC: tfrichet
copie terminée avec 0 erreur.
fichier[s] passé[s]=1
filtre=*
==[11/05/2013]==RAPPORT===[21h42]======

Mot de la fin

Malgré une petite période d’appropriation du logiciel et une autre de configuration, Cp.bat est utilisable dans un environnement de production en toute confiance. Les différents modes de sauvegardes et les autres fonctions intéressantes comme l’alerte par mail ou la prise en charge des fichiers multimédias font la différence.

D’autres évolutions pourraient être intéressantes, comme une sauvegarde de base de données, une connexion ftp ou l’intéraction avec d’autres systèmes de stockage comme Dropbox ou ownCloud. Une interface graphique serait aussi la bienvenue.

N’hésitez pas à essayer cp.bat et à en faire vos retours à l’auteur ou à moi-même. Merci à Cautex !

9 pensées sur “Un script batch pour les gouverner tous

  • 20 mars 2014 à 06:38
    Permalink

    Bonjour,
    J’ai un soucis avec l’utilisation de Cp.bat.quand je le lance en mode admin.,j’ai dans la fenêtre de présentation une ligne qui me dit d’appuyer sur une touche pour continuer.
    Après appui sur une touche,l’application quitte systématiquement.
    Y a t il une combinaison de touche à effectuer?

    Merci

    Répondre
    • 20 mars 2014 à 10:42
      Permalink

      Bonjour.
      Êtes-vous passé par l’installeur ? Avec quels paramètres lancez-vous le script ?
      Un message d’erreur est affiché avant la sortie du script ?

      Répondre
      • 20 mars 2014 à 19:30
        Permalink

        Je suis passé par l’installateur,je ne peux lancer aucun script car des une saisie l’application quitte sans aucun message d’erreur

        Répondre
  • 22 mars 2014 à 19:19
    Permalink

    Bonjour,

    J’aimerai enregistré un rapport de copie,quel est la ligne de commande concernant le rapport?

    Merci pour votre aide

    Répondre
  • 23 mars 2014 à 13:56
    Permalink

    Bonjour.

    CP.bat est capable de vous envoyer le rapport par mail.

    Si vous voulez seulement enregistrer le rapport dans un fichier, il suffit de rediriger la sortie de la commande vers un fichier.

    C’est une manipulation en DOS qui fonctionne avec toutes les commandes :

    commande > fichier.log : Redirige le résultat de la commande dans un fichier.
    commande >> fichier.log : Ajouter le résultat de la commande dans un fichier.

    Par exemple, avec cp.bat :
    cp « c:\photos » « c:\photos_copie » >> c:\log_cp.log

    Cordialement, Thibaud.

    Répondre
    • 23 mars 2014 à 18:22
      Permalink

      Merci pour cette information,j’ai voulu essayé le mode de déplacement mais j’ai une erreur avec –s-o car j aimerai faire un déplacement de fichier avec suppression de la source si aucune erreur.

      Répondre
    • 20 août 2014 à 19:50
      Permalink

      Bonjour, effectivement le lien est mort ! Je contacte le développeur pour avoir des nouvelles…
      Wait & see !

      Répondre
    • 21 août 2014 à 00:39
      Permalink

      L’adresse du miroir à changée mais le script n’est pas encore à jour (windows 8 et plus ne sont pas supportés, les mises à jour ne fonctionnent pas).
      Voici la dernière version de cp.bat en attendant :
      cp.bat

      EDIT : cp.bat est désormais compatible avec Windows 8 et 8.1 et les mises à jour fonctionnent

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Êtes-vous humain ? *