Como concatenar todos os arquivos com uma certa extensão na estrutura de diretórios

1

Estou tentando escrever um script simples para a linha de comando do Windows, que pega todos os arquivos na estrutura de diretórios (arquivos na mesma pasta e em outras pastas desse diretório) e concatena-os em um único arquivo. Neste caso, eu só quero pegar arquivos javascript (* .js).

Isso é o que eu tenho até agora depois de ver perguntas similares neste site.

@del pheonix.js
@FOR /R %%i in (*) do @type "%%i"\*.js >> pheonix.js

Quando eu executo, recebo "O nome do diretório é inválido". Alguma idéia do que está errado?

    
por John 30.04.2013 / 08:18

1 resposta

3

Use apenas *.js em for loop e remova o \*.js do seu comando type .

Além disso, eu recomendo que você use uma extensão diferente para o arquivo de saída (pelo menos temporariamente) para evitar que o for tente anexar o arquivo a si mesmo.

@echo off
del pheonix.js
FOR /R %%i in (*.js) do type "%%i" >> pheonix.tmp
ren pheonix.tmp pheonix.js

Se você tivesse removido o @ do seu lote, veria facilmente o que está errado:

D:\temp>FOR /R %i in (*) do type "%i"\*.js  1>>pheonix.js

D:\temp>type "D:\temp\aaa.js"\*.js  1>>pheonix.js
The directory name is invalid.

D:\temp>type "D:\temp\bbbb.js"\*.js  1>>pheonix.js
The directory name is invalid.

D:\temp>type "D:\temp\subfolder\cccc.js"\*.js  1>>pheonix.js
The directory name is invalid.
    
por 30.04.2013 / 09:04