logo Homepage
+  NewbieContest
|-+  Programmation» Autres langages» BATCH - Commande robocopy
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: BATCH - Commande robocopy  (Lu 7561 fois)
Skyroryk
Profil challenge

Classement : 15676/54252

Néophyte
*
Hors ligne Hors ligne
Messages: 19


Voir le profil
« le: 27 Novembre 2018 à 14:35:42 »

QUESTION 1:


Re-bonjour,

En fait j'ai modifié mon programme, en suivant vos conseils :

robocopy P:\ Q:\ /e
pause


Ce programme est dans le planificateur de tâches et se lance à chaque ouverture de session, et le démarrant. Sauf que à l'ouverture d'une session, le robocopy s'active mais dit que "Le fichier Q:\ est introuvable". Je ne vois pas pourquoi ... Est-ce-que c'est lié au fait qu'il soit un emplacement réseau ?

Merci d'avance
« Dernière édition: 27 Novembre 2018 à 18:24:22 par Skyroryk » Journalisée
Skyroryk
Profil challenge

Classement : 15676/54252

Néophyte
*
Hors ligne Hors ligne
Messages: 19


Voir le profil
« #1 le: 27 Novembre 2018 à 18:24:08 »

QUESTION 2 :


Aussi, j'en profite pour vous poser deux questions supplémentaires :

J'ai toujours mes deux emplacement reseaux P:\ et Q:\. Cette fois, j'aimerais copier à deux reprises les fichiers de P: dans Q: afin d'avoir deux fois la même version (1 originale et 1 pour modifier) des fichiers et dossiers. Sauf que quand je fais :

robocopy P:\ Q:\

Et que j'ouvre deux fois, il remplace les précédents fichiers, qui avaient déjà été copiés dans :Q ....

Comment faire pour que cela ne se produise pas ?

Merci !


(En fait j'ai vu pleins de choses sur Internet, mais c'était quasiment tout le temps pour ne pas copier des fichiers déjà présents. Alors que, au contraire, je voudrais faire une sorte de : "Fichier C" (copié au 1er robocopy) et "Fichier C - Copie 1" (copié au 2nd robocopy))
« Dernière édition: 27 Novembre 2018 à 18:31:37 par Skyroryk » Journalisée
Skyroryk
Profil challenge

Classement : 15676/54252

Néophyte
*
Hors ligne Hors ligne
Messages: 19


Voir le profil
« #2 le: 27 Novembre 2018 à 18:29:23 »

QUESTION 3:

Partie 1 :

Cette fois ci, je voudrais faire un programme batch qui automatise la copie de fichiers.

C'est-à-dire un programme en batch, (pas trop compliqué de préférence, je suis un débutant ...), qui copie n fois (n le nombre de dossiers) un fichier nommé "FICHIER" dans des dossiers différents, mais situés au même niveau de l'arborescence. On aurait alors :

 -1 : Copie dans dossier A
 -2 : Copie dans dossier B
 -3 : Copie dans dossier C
....


Donc on aurait :

 -Dossier A : (Contenu) bla blabla FICHIER
 -Dossier B : (Contenu) bla blabla FICHIER
 ...

Et cela automatiquement. Comment faire ?


Partie 2 :

Juste une très légère variante : on a :

 -Dossier X : Dossier A : bla bla bla FICHIER
                    Dossier B : blablabla FICHIER
 - Dossier Y : Dossier C : blabla FICHIER
....

C'est à dire des dossiers dans des dossiers. J'imagine qu'on fait juste Dossier X\Dossiers mais en plus compliqué ...

Partie 3 :

Un peu plus tordu :

On a Dossier Y, qui contient Dossier A, Dossier B et "Dossier SECRET". On veut que robocopy copie dans Dossier A, puis Dossier B, mais pas Dossier Secret. J'ai cru comprendre qu'on mettait "-Dossier SECRET" à la fin du programme. C'est ça ?


Merci beaucoup !
« Dernière édition: 27 Novembre 2018 à 18:33:57 par Skyroryk » Journalisée
#Z@tox#

Profil challenge

Classement : 273/54252

Membre Complet
***
Hors ligne Hors ligne
Messages: 175


Voir le profil WWW
« #3 le: 28 Novembre 2018 à 15:27:39 »

QUESTION 1:

Ce programme est dans le planificateur de tâches et se lance à chaque ouverture de session, et le démarrant. Sauf que à l'ouverture d'une session, le robocopy s'active mais dit que "Le fichier Q:\ est introuvable". Je ne vois pas pourquoi ... Est-ce-que c'est lié au fait qu'il soit un emplacement réseau ?
Salut,
Peut etre que le programme batch se lance avant que le lecteur Q: ne soit indexé.

Essaye de différer légèrement l’exécution de ton script avec un timeout de 30 secondes pour voir si le problème persiste

Code:
timeout /t 30
Journalisée

^ ^_ _ < >< > B A
Skyroryk
Profil challenge

Classement : 15676/54252

Néophyte
*
Hors ligne Hors ligne
Messages: 19


Voir le profil
« #4 le: 29 Novembre 2018 à 12:25:35 »

Ok ! Merci beaucoup, ça fonctionne.

Et pour les autres questions, vous avez une idée ?

Merci
Journalisée
#Z@tox#

Profil challenge

Classement : 273/54252

Membre Complet
***
Hors ligne Hors ligne
Messages: 175


Voir le profil WWW
« #5 le: 29 Novembre 2018 à 15:58:15 »

pour la question 2, il faut modifier ajouter une vérification de l'existance d'un fichier s'intitulant pareil avant de copier


essaye ceci:

Code:
timeout /t 30
robocopy P:\ Q:\ /e
timeout /t (remplacer ici 30 par une durée en secondes supérieure au temps de sauvegarde nécessaire)
if exist "chemin\de\ton\repertoiresauvegardé" ren "chemin\de\ton\repertoiresauvegardé" "chemin\de\ton\repertoiresauvegardé-2"
robocopy P:\ Q:\ /e
pause



attention, je pars du principe ou à chaque démarrage du PC, les sauvegardes que tu réalises écrasent cellse crées lors du précédent demarrage , si tu veux conserver systématiquement les vieilles sauvegardes, il faudra les déplacer avant de copier les nouvelles !



Journalisée

^ ^_ _ < >< > B A
Skyroryk
Profil challenge

Classement : 15676/54252

Néophyte
*
Hors ligne Hors ligne
Messages: 19


Voir le profil
« #6 le: 29 Novembre 2018 à 20:05:42 »

Ok merci ! J'ai trouvé pas mal de choses grâce à toi !

Pour la Q1, ça fonctionne et mon programme copie bien tous les fichiers de P: vers Q:

Pour la Q2, je n'ai pas encore essayé ta méthode, mais elle consiste bien à faire une copie des dossiers puis copier le contenu de P: ?

Pour la Q3, j'ai trouvé :     for /d %%X (Q:\*) do xcopy P:\ %%X /e /h ...     Et du coup ça copie P:\ dans tous les dossiers de Q:\. Enfin, j'ai essayé une fois, ça a marché, et j'ai essayé ailleurs et ça n'a pas marché. Je pense (et je suis sûr à 90%) que c'est mon code qui était faux.


Mais merci beaucoup !!



Et j'en profite pour juste vite fait :


Question 4 :

Est-il possible de faire un keylogger maison ? Pas un énorme avec les cables et l'emetteur wi-fi, juste un programme "vite-fait" en batch (ou autre) qui copie les touches du clavier et les mets dans un fichier (n'importe lequel). Un peu comme une saisie utilisateur en batch, mais passive et tout le temps. Pour la lancer, on pourrait faire un Planificateur de tâche, comme la Q1.
Je précise, parce que j'ai vu sur plusieurs forums que c'était mal vu (parce que illégal), que ce n'est pas pour espionner, c'est juste pour apprendre à en faire un et apprendre un nouveau language (ou approfondir le batch).

Merci !

Journalisée
#Z@tox#

Profil challenge

Classement : 273/54252

Membre Complet
***
Hors ligne Hors ligne
Messages: 175


Voir le profil WWW
« #7 le: 30 Novembre 2018 à 09:52:26 »

Pour la Q2, je n'ai pas encore essayé ta méthode, mais elle consiste bien à faire une copie des dossiers puis copier le contenu de P: ?

Question 4 :

Est-il possible de faire un keylogger maison ? Pas un énorme avec les cables et l'emetteur wi-fi, juste un programme "vite-fait" en batch (ou autre) qui copie les touches du clavier et les mets dans un fichier (n'importe lequel). Un peu comme une saisie utilisateur en batch, mais passive et tout le temps. Pour la lancer, on pourrait faire un Planificateur de tâche, comme la Q1.
Je précise, parce que j'ai vu sur plusieurs forums que c'était mal vu (parce que illégal), que ce n'est pas pour espionner, c'est juste pour apprendre à en faire un et apprendre un nouveau language (ou approfondir le batch).

Merci !




En fait mon code pour la Q2  réalise une copie de P: vers Q:, puis vérifie dans Q: s'il y a deja une sauvegarde de P:, si c'est le cas, il la renomme et il réalise ensuite une nouvelle copie de P: vers Q:



pour la Q4, en effet, sauf à obtenir l'autorisation des utilisateurs que tu enregistre leurs frappes, c'est pa légal, c'est pas bien compliqué ni à coder ni à trouver tout fait sur le web, mais on t'aidera pas sur ce coup là 
Journalisée

^ ^_ _ < >< > B A
Skyroryk
Profil challenge

Classement : 15676/54252

Néophyte
*
Hors ligne Hors ligne
Messages: 19


Voir le profil
« #8 le: 01 Décembre 2018 à 17:15:22 »

Du coup, j'ai une autre question.

Est-ce-que c'est possible de :
 1) Soit empêcher l'utilisateur de fermer l'invite de commande qui résulte d'un programme bat.
 2) Soit la cacher complètement.
 3) Faire un script qui se déclenche si l'uitlisateur ferme le script. (De préférence celui-ci).

Tout ça en bat.

J'ai regardé sur Internet, et il y'a des solutions en vbs qui existent, mais je voudrais tout faire en bat, si possible.

Merci
Journalisée
#Z@tox#

Profil challenge

Classement : 273/54252

Membre Complet
***
Hors ligne Hors ligne
Messages: 175


Voir le profil WWW
« #9 le: 02 Décembre 2018 à 08:32:16 »

Hello, à ma connaissance ce n’est pas possible en Batch, mais essaye quand même un script VBS, c’est certes un peu plus complexe à maîtriser comme langage, mais les possibilités sont grandes , et pas besoin de compiler, tu code avec le bloc notes Windows ou notepad++ et tu enregistre avec l’extension .vbs.

Code:
CreateObject("Wscript.Shell").Run "TON FICHIER BATCH.bat",0,True
« Dernière édition: 02 Décembre 2018 à 08:34:12 par #Z@tox# » Journalisée

^ ^_ _ < >< > B A
Skyroryk
Profil challenge

Classement : 15676/54252

Néophyte
*
Hors ligne Hors ligne
Messages: 19


Voir le profil
« #10 le: 02 Décembre 2018 à 17:23:33 »

Ok merci beaucoup, ça fonctionne.

Du coup, je continue et les problèmes pleuvent ...

Maintenant, je voudrais faire un RUN("notepad.exe") puis un SEND. Le run peut être remplacé par un start, mais le send non. Du coup, le problème est que le cmd me dit que ni RUN, ni SEND ne sont reconnus.


La phrase exacte :

C:\Users\admin>send
'send' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.



J'ai regardé sur Internet, et j'ai essayé de rajouter ceci : %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\ dans le panneau config, Système, Système avancé, Variables d'environnement.

Sauf que ça ne marche toujours pas ...

Du coup, comment faire ?

Merci
« Dernière édition: 02 Décembre 2018 à 17:30:17 par Skyroryk » Journalisée
#Z@tox#

Profil challenge

Classement : 273/54252

Membre Complet
***
Hors ligne Hors ligne
Messages: 175


Voir le profil WWW
« #11 le: 03 Décembre 2018 à 10:21:01 »

Hello , tu cherches à faire quoi au juste ?

la commande "send" n'existe pas en batch, c'est "net send"
Journalisée

^ ^_ _ < >< > B A
Skyroryk
Profil challenge

Classement : 15676/54252

Néophyte
*
Hors ligne Hors ligne
Messages: 19


Voir le profil
« #12 le: 06 Décembre 2018 à 13:11:22 »

Merci, en fait c'était une erreur, il faut un pack spécifique pour l'utiliser.

Mais j'ai encore une autre question : Est-ce-qu'on peut savoir si une touche est enfoncée ou non sur un clavier ? Sans une saisie utilisateur avec l'invite de commande qui attend l'information. Juste, si une personne appuie sur "A", le script batch reconnaît et effectue des actions ?

Oui, aussi j'ai un .bat qui lance un .vbs et les deux sont dans le même dossier. Le problème c'est que le .bat ne trouve pas le .vbs

.bat :

start blabla.vbs

"Windows n'a pas trouvé blabla.vbs"

Le seul truc qui marche c'est faire glisser le .bat sur le .vbs en le prenant avec la souris.

Merci
« Dernière édition: 06 Décembre 2018 à 13:43:11 par Skyroryk » Journalisée
#Z@tox#

Profil challenge

Classement : 273/54252

Membre Complet
***
Hors ligne Hors ligne
Messages: 175


Voir le profil WWW
« #13 le: 06 Décembre 2018 à 17:20:20 »

Est-ce-qu'on peut savoir si une touche est enfoncée ou non sur un clavier ? Sans une saisie utilisateur avec l'invite de commande qui attend l'information. Juste, si une personne appuie sur "A", le script batch reconnaît et effectue des actions ?
A ma connaissnce pas en Batch mais dans d'autres langages , aucun souci.

aussi j'ai un .bat qui lance un .vbs et les deux sont dans le même dossier. Le problème c'est que le .bat ne trouve pas le .vbs

.bat :

start blabla.vbs

"Windows n'a pas trouvé blabla.vbs"

Le seul truc qui marche c'est faire glisser le .bat sur le .vbs en le prenant avec la souris.

Merci

Essaye en ajoutant ceci:

Code:
cd chemin\de\ton\répertoire\qui\contient\blabla.vbs\

start blabla.vbs
Journalisée

^ ^_ _ < >< > B A
Pages: [1]
  Imprimer  
 
Aller à: