Copie de fichier vers destination variable

Fermé
Retch - 22 avril 2022 à 00:13
 Retch - 24 avril 2022 à 15:15
Bonjour,

Bonjour,

J'aimerais un script qui permettrait de copier des fichiers dans un répertoire dont le chemin est variable.

En fait j'aimerais envoyer un fichier à des amis qui ont du mal à utiliser un pc afin que les fichiers dont ils ont besoin se copient directement dans un dossier précis. Le problème est que chaque utilisateur a un terminal (voir plusieurs terminaux ) de destination qui porte un nom unique (suite de chiffres). L'idée serait donc de demander à utilisateur sa suite de chiffres pour ensuite atteindre les dossiers dont on a besoin pour y copier les fichiers envoyés avec le script. Ou de lui faire abord ouvrir la terminal pour que le script suive le chemin Identique après (par exemple faire ouvrir C:123456 pour copier les fichiers dans C:123456\module et C:123456\script)

Par la même occasion, pour éviter tout problème, il faudrait qu'un mot de passe soit placer sur le fichier pour en éviter la copie sans autorisation (sorte de copyright) .

Pensez-vous que c'est faisable ?

Je n'ai pas de notion de programmation autre que Le VBA d'excel du coup je suis perdu dans cette histoire ^^

Merci à qui pourra m'aider

Configuration: Android / Chrome 100.0.4896.127
A voir également:

4 réponses

brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 2 729
Modifié le 22 avril 2022 à 01:32
Bonjour,

A supposer que je mette tous les fichiers source dans un dossier transmis au destinataire et qu'il enregistrera où il veut, par exemple sur son bureau, un simple batch suffit:


@echo off

SET /P _REP=ENTRER NOM:

COPY "%~dp0\module\*.*" "C:\%_REP%\module\"
COPY "%~dp0\script\*.*" "C:\%_REP%\script\"


L'utilisateur est requis d'entrer le nom de ce fameux dossier chiffré, %~dp0 prescrit d'exécuter les commandes depuis le dossier où la commande est lancée (en français, le batch copie.cmd et tes fichiers sources sont dans le même dossier).

Dans mon exemple, il n'y a que des fichiers sous \module et \script; s'il y a aussi des sous-dossiers, on modifie les paramètres de COPY.

Si on veut faire dans Monsieur Propre, on détruit après la copie les fichiers transmis, mais il faut alors que le dossier soit copié toujours dans le même emplacement; s'il s'agit du bureau et du dossier FOLDER:

RD /S /Q %HOMEPATH%\Desktop\FOLDER

On ne peut pas crypter un fichier sauf format propriétaire exigeant un logiciel au départ et à l'arrivée: le plus simple est donc de tout expédier au format compressé zip qui lui comportera un mot de passe connu seulement des deux parties.
0
Super, Merci beaucoup C'est parfait.

Par contre s'il n'y a qu'un terminal de destination est-il possible d'y copier par défaut les fichiers sans que l'utilisateur ne doive entrer son numéro de terminal ?

Donc par exemple si c'est C:\User\Admin\123456 est-il possible d'indiquer au script de copier les fichiers dans le dossier 123456 sachant que c'est ce numéro là qui change mais que la racine est identique pour tous ?

Donc utilisateur 1 ce serait C:\User\Admin\123456 mais utilisateur 2 ce serait C:\User\Admin\7891011 par exemple, sans que l'utilisateur ne doive chercher ce chiffre.

et dernière question, pour mon histoire de copyright, serait-il alors possible de les mettre en fichiers cachés (via les paramètres de base du fichier) pour qu'il n'apparaisse pas de base dans le Zip et donc éviter des copies non voulues ou autres problèmes ?

Encore merci de tes réponses
0
brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 2 729
22 avril 2022 à 12:40
J'ai été un peu expéditif ne connaissant pas la structure exacte de ton problème: intégrer le script au dossier transmis n'est pas forcément une idée fameuse si on doit en automatiser la suppression, on va tomber sur un bec; mais ce n'est qu'un point de détail, on peut parfaitement enregistrer le dossier d'un côté, le script dans un dossier externe.

Le script en question n'a aucun moyen de savoir à quoi ressemble le dossier personnalisé de chaque utilisateur; la seule solution est alors de demander à cet utilisateur de copier le dossier transmis dans ce dossier personnalisé: la variable %~dp0 en récupérera forcément le chemin (mais copiera aussi le dossier transmis brut de coffrage sauf à y utiliser une syntaxe MOVE plutôt que COPY, à faire une exclusion via cette fois-ci XCOPY, à le supprimer après..., des détails anonymisés seraient bienvenus).

Les fichiers deviennent cachés par attribut adapté, c'est là aussi très simple y compris en exécutant le script, mais c'est une protection illusoire, il suffit au destinataire d'opter pour l'affichage des fichiers cachés.

La solution zip permet que seul l'utilisateur pourvu du mot de passe puisse décompresser et donc voir, mais rien ne s'oppose ensuite à la divulgation de ces fichiers.

Une solution de cryptage, délicate à mettre en oeuvre sur plusieurs PC en ne se servant que de Windows (qui doit en outre être en version Pro):
https://www.phhsnews.com/how-decrypt-encrypted-windows-files
ou passant par des logiciels commerciaux dédiés conduira au même résultat encore que la bonne question, à laquelle je n'ai pas de réponse, est de savoir, s'il ne s'agit que de scripts, s'ils peuvent être exécutés par Windows sur le PC de l'utilisateur sans être décryptés, je ne crois pas.

Si les utilisateurs n'ont que des comptes utilisateurs, la solution la plus simple (toujours Windows Pro) est de passer par une stratégie locale GPO qui dénie toute autorisation y compris de lecture à qui n'est pas administrateur, voire même pourquoi pas tel administrateur sur le dossier de scripts.
0
Merci pour ton aide je suis presque arrivé à ce que je voulais.

J'ai opté pour l'envoi par fichier .rar mais j'aimerais maintenant que ce fichier soit également supprimé à la fin du script. J'ai essayé avec le commande del mais cela ne fonctionne pas.

J'ai mis en dernière ligne

Del C:\User\Admin\download\monfichier.rar

(En supposant que le chemin soit celui là et non autre chose puisque par défaut lors du téléchargement)

Où se trouve mon erreur ? Et avec cette action est-ce que le fichier setra récupérable dans la corbeille ? Car ce n'est pas le but

Merci
0
brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 2 729
24 avril 2022 à 14:52
Tout fichier est récupérable dans la corbeille si on n'a pas choisi "Ne pas déplacer, supprimer immédiatement" et que l'on ne tombe pas sur un vicieux qui annule ce paramètre; pour éviter cet éventuel écueil, on vide la corbeille dans le batch après avoir supprimé le fichier .rar:

RD /S /Q C:\$Recycle.bin

On va se faire jeter si cette ligne est lue alors que le fichier .rar n'a pas encore eu le temps d'être effacé, contourner par une temporisation de 15 secondes avant la ligne précédente:

TIMEOUT /nobreak /T 15

Tu me fais douter sur la commande DEL quant à savoir si elle considère .rar comme un fichier (ce que je crois) ou un dossier (dans cette dernière hypothèse utiliser RD /S /Q).

La commande DEL ne s'exécutera pas si le fichier .rar est ouvert; pour en empêcher la verbosité et un éventuel fichier en lecture seule, on peut utiliser les commutateurs /F /Q.
Si le chemin est trop long (ce que je ne crois pas non plus), on place entre guillemets.
Et de toute façon, même quand l'utilisateur est seul, il est plusieurs, idem pour les téléchargements, ce qui nous donne:

DEL /F /Q "C:\Users\Admin\Downloads\monfichier.rar"
TIMEOUT /nobreak /T 15
RD /S /Q C:\$Recycle.bin

Se souvenir que par définition le fichier rar a été décompressé, et qu'il faut donc aussi supprimer les fichiers décompressés qui n'auraient pas été placés directement au bon endroit.
1
Salut et encore un énorme merci pour toutes ces informations !

La commande DEL fonctionnait en réalité très bien mais crétin que je suis je l'ai mise en dernière ligne, donc après la commande de supression des fichiers décompressés et donc également après la supression du fichier contenant le script. Dès lors c'est très logiquement qu'il ne prenait pas en compte ce qui se passait après puisque la commande s'arrêtait avant ????

Mais j'ai été très éclairé par toute tes connaissances. C'est un plaisir d'apprendre auprès de personnes telles que toi qui explique aussi bien.

Bonne journée
0