Un script batch pour les gouverner tous
Sommaire
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 ».
Les modes d’utilisations
Avant toute chose, utilisez cp.bat en mode administrateur ou désactivez le contrôle de compte utilisateur.
cp.bat est utilisable en 5 modes :
- Copie de répertoire
- Déplacement de répertoire
- Sauvegarde de répertoire
- Traitement d’images
- 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"
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 :
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 :
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é :
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.
La progression est affichée par fichier et un rapport est généré à la fin du traitement.
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.
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
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).
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 :
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
Petite 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"
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 !
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
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 ?
Je suis passé par l’installateur,je ne peux lancer aucun script car des une saisie l’application quitte sans aucun message d’erreur
Bonjour,
J’aimerai enregistré un rapport de copie,quel est la ligne de commande concernant le rapport?
Merci pour votre aide
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.
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.
Bonjour Thibaud,
As-tu des news sur la mise à disposition de cp.bat? En effet le lien vers l’installeur semble inactif : http://batchutopia.dyndns.org/autre/installateur.bat
J’ai également posté une demande sur http://batch.xoo.it
Merci.
gmbk.
Bonjour, effectivement le lien est mort ! Je contacte le développeur pour avoir des nouvelles…
Wait & see !
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