1

Я пытаюсь написать простой сценарий для командной строки Windows, который берет все файлы в структуре каталогов (файлы в той же папке, а также другие папки в этом каталоге) и объединяет их в один файл. В этом случае я хочу получить только файлы javascript (* .js).

Это то, что я имею до сих пор после просмотра похожих вопросов на этом сайте.

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

Когда я запускаю его, я получаю «Неверное имя каталога». Есть идеи, что не так?

1 ответ1

3

Просто используйте *.js в цикле for и удалите \*.js из команды type .

Кроме того, я бы рекомендовал вам использовать другое расширение выходного файла (по крайней мере , временно) , чтобы избежать for попытки присоединить файл к себе.

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

Если бы вы удалили @ из своей партии, вы бы легко увидели, что не так:

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .