Robocopy ne copie pas le dossier racine et son horodatage - il copie tous les sous-répertoires et fichiers (lorsque les options appropriées sont définies) et il ne semble y avoir aucune option / argument pour dire à Robocopy que vous voulez le dossier racine lui-même et son horodatage ou ses attributs à copier mot pour mot également.
Alors dis je veux je veux copier C: / Brushes
Robocopy copiera tous ses sous-répertoires et fichiers dans la destination, mais pas le dossier Brushes lui-même, avec tous les attributs et l'horodatage associés.
Tu comprends ce que je demande? C'est assez basique et Robocopy semble manquer d'une option pour cela. Les gens ont déjà posé la question dans divers forums, mais en ce qui me concerne, personne n'a répondu à la question.
rsync
, mais que faire si vous n'avez pas de barre oblique à la fin de votre dossier cible? Que diriez-vous d'essayer de modifier le script au niveau de la ligne de commande au lieu d'utiliser l'interface graphique? Je sais pertinemment que l'outil de ligne de commande fera ce dont vous avez besoin.Réponses:
Déposez un dossier sur
bat
ou utilisez dans Envoyer vers . Il créera un dossier avec le nom et l'horodatage du répertoire source et copiera tous les fichiers.la source
%~n1
?Je suis d'accord avec l'OP, ne pas pouvoir copier le dossier racine est un gros défaut de robocopy. Que diriez-vous de tricher et de déplacer le dossier pinceaux dans un dossier temporaire, d'effectuer l'opération de photocopie sur le dossier temporaire, puis de le déplacer à nouveau?
Quelque chose comme:
la source
Essayez à
md D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
partir de la ligne de commande, en remplaçant les bons chemins.la source
Comme je ne vois aucune solution bonne et facile dans aucune des réponses:
S'il n'y a pas de solution pour robocopy, vous pouvez jeter un œil à xxcopy (il existe des versions gratuites et commerciales).
Il existe bien sûr de nombreuses autres alternatives à la robocopie, certaines sont répertoriées ici .
Voir aussi Meilleur utilitaire de copie de fichiers gratuit .
la source
xxcopy
est un excellent utilitaire, mais la version du logiciel gratuit a une invite à laquelle vous devez répondre si vous utilisez l'une des grandes listes de commutateurs de ligne de commande. À l'aidexxcopy
d'une fenêtre de commande, cette invite supplémentaire est irritante. Mais cela empêche (complique) l'utilisation d'xxcopy
un fichier batch.La réponse de user105198 est à mi-chemin,
D:\Backup\Brushes && robocopy C:\brushes D:\Backup\Brushes
va en effet juste créer un nouveau dossier. Vous aurez besoin de append / MIR et / dcopy: T à ellecombinés ensemble, cela signifie que les attributs et les horodatages du répertoire source seront reflétés dans le dossier créé.
donc:
la source
Je pense que vous constaterez que Robocopy fait exactement ce que vous voulez, à condition de lui demander de copier les horodatages du dossier (/ DCOPY: T). D'après mes expériences, j'ai trouvé que le comportement suivant (apparemment non documenté) était vrai pour Robocopy:
Les propriétés spécifiées peuvent inclure (au moins) les informations de sécurité (/ SEC) ou les horodatages du dossier (/ DCOPY: T).
Par conséquent, dans l'exemple suivant, le dossier c: \ destination \ recevra les mêmes horodatages que le dossier c: \ source \.
J'ai testé cela avec les versions de Robocopy incluses avec Windows 7, Windows 8 et le Kit de ressources Windows 2003 (paramètre / SEC uniquement). Notez que seules les versions plus récentes de Robocopy (XP026 et supérieures) prennent en charge le paramètre / DCOPY: T.
la source
Si vous combinez
/IF :: Include the following Files.
avec/E :: copy subdirectories, including Empty ones.
vous obtenez (proche) l'effet souhaité:la source
Robocopy n'est pas vraiment conçu pour le faire facilement. Cependant, il existe un moyen.
Le dossier racine contient disons 50 fichiers et 40 dossiers. Vous ne voulez que le dossier X (mais vous voulez aussi son horodatage).
Le / DCOPY: T lui dit de conserver les horodatages du dossier. Le / XF spécifie les fichiers à NE PAS copier, / XD spécifie les dossiers à NE PAS copier. Ne spécifiez simplement pas le dossier c: \ X.
Le principal inconvénient est de rechercher tous les dossiers et noms de fichiers à la racine et de les appeler spécifiquement tous ici. Si vous faites cela souvent sur différents systèmes, un script pourrait être écrit.
Exemple de travail
robocopy c: \ testing c: \ abc / XF c: \ testing \ Testing.txt / XD "C: \ testing \ New Folder (2)" "C: \ testing \ New Folder (3)" / S / E / SEC / DCOPY: T
Exemple de travail racine
robocopy c: \ d: \ / XF c: \ Testing.txt / XD "C: \ New Folder (2)" "C: \ New Folder (3)" / S / E / SEC / DCOPY: T
Mon test a fonctionné, je crée quelques dossiers et sous-dossiers, c: \ testing était root dans ce cas, c: \ abc était root d'un autre lecteur (évidemment ils ne le sont pas vraiment, mais à cet effet cela devrait avoir du sens). Le dossier que je voulais depuis la racine s'appelait "Nouveau dossier", comme vous pouvez le voir, je ne l'ai pas spécifié dans le / XD. Assurez-vous également que vous spécifiez le c: \ ou les noms que vous utilisez seront globaux. En d'autres termes, si je ne spécifiais pas c: \ testing in à partir du fichier Testing.txt, il l'omettrait de TOUS les sous-dossiers copiés. La / SEC copiera tous les horodatages de sécurité et d'horodatage.
la source
En théorie, l'utilisation
/DCOPY:T
devrait résoudre tous vos problèmes.Mais, j'ai vu cela se produire, et je ne suis pas sûr que j'appellerais cela un "bug", mais plutôt une conséquence de la séquence des opérations (OK, bug).
Cette commande doit fonctionner pour copier tous les fichiers de
C:\Brushes
versD:\NEWBrushes
et/DCOPY:T
doit entraîner la copie des horodatages du dossier source dans le dossier de destination:Ce que j'ai vu (au moins sur certaines versions de Robocopy), c'est que la commande réussit, mais l'horodatage du
D:\NEWBrushes
dossier est défini sur la date et l'heure actuelles.Il semble donc que la
/DCOPY:T
fonctionnalité ne fonctionne pas pour le dossier "de base" (le plus haut) que vous copiez.Je crois que cela fonctionne, mais que l'horodatage du dossier de destination est "piétiné" par des opérations plus tard dans la séquence d'opérations.
Je pense que ce qui se passe pour cette commande:
est quelque chose comme ça:
D:\NEWBrushes
s'il n'existe pas déjàC:\Brushes
àD:\NEWBrushes
C:\Brushes
versD:\NEWBrushes
Il semble qu'à l'étape 3, la modification du contenu du dossier
D:\NEWBrushes
entraîne leD:\NEWBrushes
changement d' horodatage de .Pour moi, la "solution de contournement" a consisté à exécuter la
robocopy
commande pour copier les fichiers et les dossiers, puis à exécuter la (même)robocopy
commande une deuxième fois.Donc, la première fois que vous exécutez:
tous les fichiers et dossiers seront copiés. Puis le relancer:
La deuxième fois
robocopy
, aucun fichier ou dossierD:\NEWBrushes
ne sera modifié et l'/DCOPY:T
option indiquerarobocopy
de copier l'horodatage deC:\Brushes
àD:\NEWBrushes
(sauf s'il y a des dossiers / fichiersC:\Brushes
qui ont changé depuis la première exécution derobocopy
).la source
Je résolvais les dossiers racine en ce moment pour un script de sauvegarde très rapide et facile avec robocopy, il y a un exemple. Devrait aider quelqu'un:
la source