xcopy,requete utilisateur et ACL

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

keben
Batcheur occasionnel
Messages : 9
Enregistré le : 13 févr. 2009 01:38

xcopy,requete utilisateur et ACL

Message par keben »

bonjour a tous
Voila, j'aimerai savoir si il serait possible de creer un batch pour utiliser la fonction xcopy afin de dupliquer un répertoire complet (sous repertoire inclus) ainsi que toutes les ACL qui ont été paramétrés, en lançant une requête pour que l'utilisateur ait simplement a rentrer le nom du nouveau répertoire cible.
Mon souci c'est que je ne vois pas comment, ni quelle commande pourrait être utilisée pour initier la requête, enregistrer la réponse, et l'utiliser comme nom du répertoire cible de xcopy.
Peut être n'est ce d'ailleurs pas faisable en batch dos, mais si quelqu'un avait connaissance d'un script sous un autre langage qui puisse rendre ce service cela me rendrait un fier service. l'idée derrière tout ça et d'avoir un outil le plus user-friendly possible pour automatiser la duplication et renomage de dossier, ACL comprise
Par avance merci à tous ceux qui me consacrerons un peu de leur temps.
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

Re: xcopy,requete utilisateur et ACL

Message par Batch_Man »

Bonjour,

Je n'utilise pas ce genre de commande, mais vois du coté de net use /?

Batch_Man
keben
Batcheur occasionnel
Messages : 9
Enregistré le : 13 févr. 2009 01:38

Re: xcopy,requete utilisateur et ACL

Message par keben »

en fait en continuant à chercher sur le net, j'ai trouvé cela :@echo off
--------------------8<----------------------
@echo off
setlocal
set folder=
set /p folder=Type the folder to copy to:
if {%folder%}=={} goto :end
echo d | xcopy sf %folder% /e /o
:end
endlocal
--------------------8<----------------------

mais j'ai quelques souci pour décoder la commande...notament sur ce qu'il me faut rentrer comme information pour la faire fonctionner.
est ce que je dois completer le = en face de set folder et mettre le nom du dossier source?
Est ce que je dois enlever le echo pour que la commande xcopy se lance
et enfin je ne comprends pas le D | , qu'est il censé faire, et a quoi correspond sf dans la même commande (la ou devrai se trouver le nom de la source)
si vous pouviez m'aider à décoder ce batch je vous en serais reconnaissant.
merci
pmer
Batcheur occasionnel
Messages : 9
Enregistré le : 12 févr. 2009 13:54

Valeur variable fausse

Message par pmer »

Bonjour,
je suis un tout nouveau membre de ce forum. Je suis un débutant dans l'utilsation et la programmation en batch.
J'avoue que ce site web m'a bien aidé pour commencer ma programmation.
Voici mon problème :
dans le programme ci-dessous je ne comprends pas pourquoi la valeur de la variable !unsurLMO! est toujours égale à 0 alors que %%g est différente de 0 et vaut 142,9;156,1;599,8
programme batch
echo off
setlocal enableDelayedExpansion
@FOR /f "tokens=1-2,4-5,19-21 delims=," %%a in (D:\MeteoMM5\20080630separvirg.txt) do (
set LMO=%%g
set /A unsurLMO=1/!LMO!
echo 1/LMO : !unsurLMO!
)
endlocal
pause

Extrait du fichier 20080630separvirg.txt (3 lignes, 27 colonnes):
2008063000, 17.25, 0.783, 2.89, 360., 0.0, 0.0, -4.0, 2.5, 385.6, 9.80, 0.00, 0.00, 61., 0., 0., 0., 22405., 0.00, 300., 142.9, 267.9, 11.07, 9.80, 3.13, 327.,
2008063001, 16.77, 0.796, 2.83, 2., 0.0, 0.0, -3.5, 2.0, 381.8, 9.29, 0.00, 0.00, 19., 0., 0., 0., 22485., 0.00, 302., 156.1, 264.9, 3.38, 9.29, 2.54, 323.,
2008063002, 16.04, 0.801, 2.96, 3., 0.0, 0.0, -2.5, 2.4, 379.2, 10.13, 0.00, 0.00, 24., 0., 0., 0., 22919., 0.00, 292., 599.8, 263.4, 4.41, 10.13, 2.20, 321.,

En vous remerciant par avance pour votre aide sur cette question de néophyte.
Cordialement.
Pmer
danakil
Batcheur débutant
Messages : 17
Enregistré le : 06 févr. 2009 13:25

Re: xcopy,requete utilisateur et ACL

Message par danakil »

Salut keben!
Tu peux essayer ceci éventuellement.
Dans cet exemple je copie le répertoire cible c:\MONREP et ses sous répertoires vers mon lecteur g:\
Comme g:\MONREP n'existe pas je le crée auparavant. Si je ne le fais pas je copierai simplement les sous répertoires de MONREP dans g:\

Code : Tout sélectionner

@echo off

rem creation du répertoire de destination

If not exist g:\MONREP md g:\MONREP

pause

rem COPIE.BAT copie c:\MONREP g:

xcopy /s /e c:\MONREP g:\MONREP

if errorlevel 4 goto pbmemoire

if errorlevel 2 goto annuler

if errorlevel 0 goto fin

:pbmemoire

echo Memoire insuffisante pour copier les fichiers ou

echo lecteur non valide ou erreur de syntaxe.

goto fin

:annuler

echo Vous avez appuye sur CTRL+C pour annuler la copie.

goto fin

:fin
pause

 
A adapter avec tes répertoires cibles et tes lecteurs destination.
A vérifier aussi si toutes les informations ont été correctement copiés.

Note:
pmer si tu veux que ton sujet soit pris en compte, supprime ton post et crées un nouveau sujet ici:
http://batcher.fr/forum/viewforum.php?f=4
keben
Batcheur occasionnel
Messages : 9
Enregistré le : 13 févr. 2009 01:38

Re: xcopy,requete utilisateur et ACL

Message par keben »

bonjour
pour info le code donné ci dessous fonctionne pour ce que je souhaitais en faire : permettre à un utilisateur lambda de copier simplement l'ensemble d'un dossier (ACL comprise) en n'ayant qu'a renter le nom du répertoire cible...simplement rajouter l'option /I afin que xcopy ne demande pas la confirmation repertoire ou fichier... donc cela donne:

--------------------8<----------------------
@echo off
setlocal
set source= le nom/chemin du dossier source à copier
set folder=
set /p folder=Type the folder to copy to:
if {%folder%}=={} goto :end
echo d | xcopy %source% %folder% /e /o /i
:end
endlocal
--------------------8<----------------------

voila, merci à ceux qui ont pu contribuer à ce post
danakil
Batcheur débutant
Messages : 17
Enregistré le : 06 févr. 2009 13:25

Re: xcopy,requete utilisateur et ACL

Message par danakil »

Salut keben!
Effectivemment je n'avais pas compris ce que tu voulais obtenir comme résultat. Maintenant que j'ai testé le batch, j'y vois plus clair. Cependant il y a cette commande "echo d" que je ne cerne pas réellement ... ce n'est pas un commutateur et on peut la remplacer par n'importe quelle lettre, voir la supprimer, pour obtenir le même résultat!
Tu pourrais me fournir tes sources sur le net afin que je me fasse une idée?

Merci
keben
Batcheur occasionnel
Messages : 9
Enregistré le : 13 févr. 2009 01:38

Re: xcopy,requete utilisateur et ACL

Message par keben »

Bonjour
Je reviens avec mon petit programme de batch visant à automatiser la copie d'un dossier complet avec toutes ces ACL.
J'ai avancé dans la complexité en couplant le batch ci-dessou à un petit utilitaires appelé runasspc qui permet de lancer une application avec des droits administrateurs... le but visé étant de permettre à un utilisateur lambda de creer toute un structure de dossier ACL comprise sans que cet utilisateur n'ai de droit d'écriture/modification sur le dossier parent cible ni sur les dossier interne de la structure. c'est pour cela que j'ai utilisé runasspc pour que les droits de création xcopy soient donnés au batch et non à l'utilisateur qui lui n'a que le droit d'executer ....vous me suivez là? bah vous êtes trés fort alors!!

Donc prenons un exemple...j'ai un dossier partagé X sur un serveur distant, dans lequel j'ai un premier batch :

\\192.168.4.205\runasspc$\runasspc.exe /cryptfile:"\\192.168.4.205\test\crypt.spc" /quiet

Ce batch appel la fonction runasspc qui lit le fichier crypter spc qui lance un autre batch stocké sur un dossier reseau "test", ce batch est le suivant

@echo off
pushd \\192.168.4.205\base$
setlocal
set source=\\192.168.4.205\test\bat
set /p folder=entrer le nom du dossier de destination:
if {%folder%}=={} goto :end
echo d|xcopy %source% %folder% /e /o /i
echo la copie des fichiers s'est bien terminée
popd
pause
:end
endlocal

la fonction pushd est essentielle à cause d'un probleme unc avec la commande cmd qui m'empechait de copier sur un lecteur mappé (j'avais mon arborescence copié dans le répertoire windows par defaut).

cette fonction telle quelle fonctionne parfaitement, mon utilisateur lambda n'a pas de droit sur le repertoire X qui doit recevoir la nouvelle structure, et grace à la commande pushd je peux faire en sorte que mon 2eme batch s'execute à la racine de mon répertoire de destination (ici \\192.168.4.205\base$)

MON SOUCI....à l'intérieur de mon dossier modele, qui comporte plusieurs autre répertoires, j'ai également inclus le même modele de batch chargé de créer d'autres structure de dossier selon le besoin...mais ne sachant pas à l'avance quel pourra être le path de la structure, je ne peux pas utiliser la fonction pushd pour l'inscrire en dur dans mon batch...

MA QUESTION : comment est ce que je peux faire pour que mon batch aille s'éxecuter à l'endroit du premier batch (pour mémoire qui sera du style \\192.168.4.205\runasspc$\runasspc.exe /cryptfile:"\\192.168.4.205\test\crypt.spc" /quiet) ou comment récupérer le repertoire en cours dans le premier batch pour ensuite l'appeler dans le deuxième...

Chapeau aux courageux qui auront lu jusqu'ici...mon admiration éternelle à ceux qui auront compris l'idée et les exemples.... ma reconnaissance sans borne à ceux qui arriveront à m'aiguiller sur une solution!!
:D
keben
Batcheur occasionnel
Messages : 9
Enregistré le : 13 févr. 2009 01:38

Re: xcopy,requete utilisateur et ACL

Message par keben »

re-bonjour
j'ai cherché sur le forum et j'ai trouvé ce post :
http://www.batcher.fr/forum/viewtopic.php?f=4&t=95
Qui je pense pourrais m'aider....même si je ne vois pas encore bien ou et comment l'intégrer dans mon batch...alors si sam06 ou bigfish me lisent...je serais pas contre un coup de pouce....ou d'autres également bien entendu!
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

Re: xcopy,requete utilisateur et ACL

Message par Batch_Man »

Bonjour,

J'ai lue en 2 fois :D et je suis pas sur d'avoir bien lu :roll:

Pour savoir tous les répertoires d'un dossier c'est simple:

Code : Tout sélectionner

For /f "tokens=*" %%a in ('dir /b /s "C:\ton rep"') do echo %%a
Au lieu de la commande echo %%a tu peux mettre la commande que tu veux

Batch_Man
Répondre