2016-11-07 3 views
1

J'essaye d'utiliser deux pour les boucles pour obtenir un travail simple fait: Le premier for-loop m'apporte une liste de fichiers, le deuxième for-loop alors devrait me joindre le contenu de tous les fichiers ensemble dans un fichier temporaire (et plus tard ftp quelque part mais ce n'est pas le problème). Donc, ce est mon code à ce jour:batch: seconde pour la boucle avec des espaces dans le nom dir ne fonctionnent pas

setlocal enableDelayedExpansion 

REM FILE-MERGER 
if exist "%temp%\ZS_aus_Files.csv" del /f /q "%temp%\ZS_aus_Files.csv" 
for /f "delims=" %%x in ('dir /s /b /a-d C:\Documents\accounting\') do (
     echo %%x 
     for /f tokens^=*^ delims^=^ eol^= %%f IN (%%x) DO echo %%f >> %temp%\ZS_aus_Files.csv 
) 

%% x a jusqu'à présent le chemin complet en elle avec des espaces aussi bien. Dans la deuxième boucle for (%% x) renvoie une erreur à cause de l'espace.

sortie de mon code est quelque chose comme:

C:\Documents\accounting\file with spaces.csv 
The file "C:\Documents\accounting\file" cannot be found. 

Mettre (%% x) qoutes ("%% x") fait la sortie une liste de fichiers au lieu d'un fichier contenu fusionné.

Je suis vraiment resté ici, j'espère que quelqu'un pourra m'aider avec ça.

+0

Je ne comprends pas pourquoi vous échappez à toutes les options 'FOR/F'? – Squashman

Répondre

1

essayer avec

if exist "%temp%\ZS_aus_Files.csv" del /f /q "%temp%\ZS_aus_Files.csv" 
for /f "delims=" %%x in ('dir /s /b /a-d C:\Documents\accounting\') do (
     echo %%x 
     for /f usebackq^ tokens^=*^ delims^=^ eol^= %%f IN ("%%x") DO echo %%f >> %temp%\ZS_aus_Files.csv 
) 

Ce n'est pas documenté par MS du tout dans l'aide mais quand usebackq est utilisé avec des guillemets doubles il peut être utilisé pour les noms de fichiers et traite les noms de fichiers avec des espaces.

+1

Il est documenté dans le texte d'aide de 'for /?' - voir la section ci-dessous le premier exemple 'for/F' ... – aschipfl

+0

@aschipfl - aah right.Il n'y a pas d'exemple mais est mentionné dans le texte. – npocmaka

+0

Je suggérerais que 'echo' devienne un' type' dans l'original et la réponse donnée à la description du problème. – Magoo