2017-08-31 1 views
1

je l'ai déjà trouvé dans un autre sujet, How to merge text files with the same name from all subdirectories?, le code suivant pour fusionner les fichiers avec un lot:de Windows Batch - fichiers vides tout en essayant de fusionner des fichiers texte avec le même nom de tous les sous-répertoires

@echo off 
    for /r "." %%a in (*.txt) do (
    echo %%~na 
    type %%a >> %%~na-merged.txt 
) 

Dans mon PC local cela fonctionne bien. Mais, lorsque j'essaie ceci sur un serveur Windows que nous utilisons dans un VDI, les nouveaux fichiers sont créés vides. Vous pouvez trouver ci-dessous les informations de cmd:

« aaa » est pas reconnu comme une commande interne ou externe, utilisable programme ou d'un fichier batch. 'áááecho' n'est pas reconnu comme commande interne ou externe, programme utilisable ou fichier séquentiel. 'ááá' n'est pas reconnu comme commande interne ou externe, programme exécutable ou fichier batch . L'accès est refusé. Une erreur s'est produite lors du traitement: D: ... Le système ne trouve pas le fichier spécifié. Erreur survenue lors du traitement: -. Le système ne peut pas trouver le chemin spécifié. Appuyez sur n'importe quelle touche pour continuer . . .

Quelqu'un peut-il aider?

+0

Mettez '@echo on' et regardez sur quelle ligne l'erreur se produit. Essayez aussi de citer '%% a' dans' type %% a ... '->' type "%% a" ... '. –

+0

... ou mieux: '" %% ~ a "' ... – aschipfl

+0

@aschipfl Cela fonctionne! Merci à tous pour votre aide! J'avais déjà essayé avec des citations mais ça ne fonctionnait pas. – Lydia

Répondre

0

Une ligne du répertoire approprié à l'invite de commandes.

@(For /F "Delims=" %A In ('FindStr/SM $ "samename.txt"') Do @(Echo "%~A"&Type "%~A"))>"samename-merged.txt" 

Modifier les deux instances de samename à votre cahier des charges de nom spécifique.

0

Cela a fonctionné en utilisant le "~".

@for /r "." %%a in (*.txt) do (echo %%~na type "%%~a" >> %%~na-merged.txt) 

Merci encore à vous tous pour votre aide!

+0

Cela ramasse chaque fichier '.txt' dans l'arbre des scripts; pas les mêmes noms que ceux stipulés dans votre question. Ce que vous avez posté comme 'travaillé' ne fait pas non plus ce que vous avez demandé dans votre propre question! – Compo

+0

Non, il sélectionne et ajoute uniquement les fichiers ayant le même nom qui sont .txt – Lydia

+0

Oui; vous avez demandé ** de fusionner des fichiers texte avec le même nom **, ce que vous avez posté est ** pour fusionner des fichiers avec l'extension .txt **. Votre script tel qu'il est écrit est supposé créer un fichier dupliqué pour tous les fichiers texte nommés de manière unique, fusionnés à leurs noms et fusionner le contenu de tous les fichiers texte avec le même nom dans un seul fichier ajouté-fusionné à son nom. Cela dit, et comme je l'ai indiqué ci-dessus, ce que vous avez posté comme réponse ne crée certainement pas un fichier de sortie contenant le texte fusionné à partir des fichiers. – Compo