L'ajout (fusion) de fichiers ensemble fonctionne-t-il avec XCOPY?
Je souhaite fusionner plusieurs fichiers (texte) ayant le même préfixe en un seul fichier. Cette tâche fait partie d'un lot entier (en VBScript) mais en raison des attentes en matière de performances, je suis plus susceptible d'utiliser une commande native plutôt que de programmer une boucle (ouverture de chaque fichier, lecture de tout le contenu, puis écriture dans le fichier de destination) en VBScript.
Actuellement confronté à un problème avec COPY
qui semble vous obliger à vider le tampon StdOut (car il sort tous les noms de fichiers qu'il copie) Je regardais vers XCOPY
qui a beaucoup plus d'indicateurs pour configurer son comportement et sa sortie (comme /Q
qui Supprime l'affichage des messages xcopy ).
Lecture du document: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb491035(v=technet.10)
Je suis tombé sur ceci:
Ajouter des fichiers
Pour ajouter des fichiers, spécifiez un seul fichier pour la destination, mais plusieurs fichiers pour la source (c'est-à-dire en utilisant des caractères génériques ou au format file1 + file2 + file3).
OK donc j'écris: xcopy "My file pattern whatsoever.*.tmp" "My destination file.tmp"
Malheureusement, il demande si My destination file.tmp
est un fichier ou un répertoire, auquel je devrais répondre avec F
(pour le fichier) ou D
(pour le répertoire). Remarque: cela dépend de la langue (dans mon cas - le français - c'est F ou R).
J'ai remarqué cela dans le document ci-dessus:
Spécifiant si la destination est un fichier ou un répertoire
Si la Destination ne contient pas de répertoire existant et ne se termine pas par une barre oblique inverse (), le message suivant apparaît :
{ [15]} Appuyez sur F si vous souhaitez que le ou les fichiers soient copiés dans un fichier. Appuyez sur D si vous souhaitez que le ou les fichiers soient copiés dans un répertoire.Does destination specify a file name or directory name on the target (F = file, D = directory)?
Vous pouvez supprimer ce message en utilisant l'option de ligne de commande /i , ce qui fait supposer à xcopy que la destination est un répertoire si la source est plusieurs fichiers ou un répertoire.
Eh bien, comme cela /i
flag ne correspond pas à mon besoin, j'ai recours à un truc que j'ai lu ici et là, comme (parmi les réponses): https://stackoverflow.com/a/45134466
Alors j'essaie ça: echo F|xcopy "My file pattern whatsoever.*.tmp" "My destination file.tmp"
OK maintenant, le premier fichier est copié dans le fichier de destination, mais pour chaque fichier suivant, une question apparaît sur le remplacement du fichier de destination (?!!).
À propos, tous sont rejetés car la commande echo
ne leur fournit aucune entrée.
Si j'utilise ce drapeau :
/ l : Supprime l'invite de confirmation que vous souhaitez écraser un fichier de destination existant.
Ensuite, je me retrouve avec un fichier de destination contenant uniquement le contenu du dernier fichier que je souhaite fusionner (c'est-à-dire le dernier fichier correspondant au motif source)!!!
J'ai également essayé de vérifier si cela fonctionne avec seulement deux fichiers, par exemple: xcopy "My file pattern whatsoever.0001.tmp"+"My file pattern whatsoever.0002.tmp" "My destination file.tmp" but I get an error:
Fichier introuvable - Mon modèle de fichier que ce soit.0001.tmp + Mon modèle de fichier que ce soit.0002.tmp'
Pareil si j'ajoute des espaces autour du +
; dit Invalid number of parameters
, probablement parce que la syntaxe file1 + file2 + file3 ne fonctionne pas avec des noms de fichiers longs (y compris les espaces), comme suggéré ici: https://stackoverflow.com/questions/30651776/xcopy-returns-error-invalid-number-of-parameters-when-exclude-parameter-is-set
Alors qu'est-ce qui ne va pas avec ce que je fais (ou essaie de faire)?