Script sous windows.

Résolu/Fermé
firac Messages postés 39 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 18 novembre 2010 - 10 mars 2010 à 10:56
firac Messages postés 39 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 18 novembre 2010 - 10 mars 2010 à 14:40
Bonjour.
Aidez svp à ecrire ce script:
Nous sommes sous l'environnement windows. Nous avons un repertoire nommé travaux contenant aussi bien des fichiers texte, audio, video et des repertoires. Nous nous placons dans le repertoire parent du repertoire travaux. Notre objectif est de renommer travaux en works sans utiliser la commande permettant de renommer. La methode consiste à créer le repertoire works et de copier tout le contenu du repertoire travaux dans works. Enfin on supprime travaux et son contenu. Ecrire un script permettant de renommer par recopie.
A voir également:

4 réponses

Yaggoth Messages postés 16 Date d'inscription mercredi 10 mars 2010 Statut Membre Dernière intervention 26 janvier 2016 1
10 mars 2010 à 11:37
Je vois pas trop l'interêt, de ce script ou sinon je n'ai pas du comprendre ce que tu demandes.

Dans le doute je propose quand même une réponse :

En Batch
REM retour au dossier parent
Cd ..
REM Copie de tous les fichiers et dossiers (y compris les dossiers vide) et création du dossier s'il n'existe pas (/I)
REM /G pour la prise en charge des fichiers crypté
REM /H pour la prise en charge des fichiers caché
REM /K Copie des attributs (lecture seule, archive, ...)
REM /O pour la copie des ACL (droits sur les fichiers)
REM /X pour la copie de la DACL (liste d'audit)
Xcopy Travaux Works /E /I /G /H /K /O /X
REM On gette les erreurs
IF %ERRORLEVEL% == 0 THEN
GOTO SUPPRESSION
GOTO ERREUR

:SUPPRESSION
REM On supprime le dossier Travaux sans confirmation
rd Travaux /S /Q 
goto FIN

:ERREUR
Echo Une erreur s'est produite, fin du script

:FIN


En VBS
CONST DOSSIER_SOURCE = "Travaux"
CONST DOSSIER_DESTINATION = "Works"

'On crée une procédure recursive pour la copie des fichiers et dossiers
Sub CopierArborescence (pstrSource, pstrDestination)
	Set lobjFileSystemobject = CreateObject("Scripting.FileSystemobject")
	
	If lobjFileSystemobject.FolderExists(pstrSource) then
		Set lobjDossierSource = lobjFileSystemobject.GetFolder(pstrSource)
		
		'On crée le dossier destination s'il n'existe pas
		If Not lobjFileSystemobject.FolderExists(pstrDestination) then
			lobjFileSystemobject.CreateFolder(pstrDestination)
		End If
		
		'On copie tous les fichiers
		For Each lobjFichier In lobjDossierSource.Files
			lobjFichier.Copy pstrDestination & "\" & lobjFichier.Name
			lobjFichier.Delete
		next
		
		'On relance le traitement pour chaque dossier
		For Each lobjDossier In lobjDossierSource.SubFolders
			CopierArborescence lobjDossier.Path, pstrDestination & "\" & lobjDossier.Name
			lobjDossier.Delete
		Next
	Else
		Wscript.Echo "Dossier " & DOSSIER_SOURCE & " est introuvable"
		Wscript.Quit
	End if
End Sub


CopierArborescence DOSSIER_SOURCE, DOSSIER_DESTINATION


En PowerShell V1/V2
## Encore plus simple, en une ligne
copy-item Travaux Works -recurse;Remove-Item Travaux -recurse

## l'avantage de l'avoir sur une ligne c'est que si l'instruction de copie échoue, t'es sur que le remove ne se lancera pas


Voilà en esperant que cela puisse t'aider.
0
firac Messages postés 39 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 18 novembre 2010 2
10 mars 2010 à 13:53
Salut, merci beaucoup mais c`est que etant un novice dans ce domaine est ce que je peux avoir un batch le plus simple possible?
0
Yaggoth Messages postés 16 Date d'inscription mercredi 10 mars 2010 Statut Membre Dernière intervention 26 janvier 2016 1
10 mars 2010 à 14:00
Il suffit de retirer les commentaires, ils ne servaient qu'a la compréhension du code.

Donc ça donne :

Xcopy Travaux Works /E /I /G /H /K /O /X
IF %ERRORLEVEL% == 0 THEN
GOTO SUPPRESSION
GOTO ERREUR
:SUPPRESSION
rd Travaux /S /Q 
goto FIN
:ERREUR
Echo Une erreur s'est produite, fin du script
:FIN


Si tu retires la gestion d'erreur d'arrive à ça

Xcopy Travaux Works /E /I /G /H /K /O /X
rd Travaux /S /Q


Mais le problème est que si une erreur se produit pendant la copie des fichiers, le dossier sera quand meme supprimé ce qui peut être très dangereux.

La solution basé sur PowerShell ne souffre pas de se problème car l'instruction de suppression n'est executé que si la copie à fonctionné (test implicite).
0
firac Messages postés 39 Date d'inscription mercredi 31 décembre 2008 Statut Membre Dernière intervention 18 novembre 2010 2
10 mars 2010 à 14:40
Merci l'ami c'est bon.
0