Как я могу скопировать содержимое нескольких папок с помощью команды CMD copy? - PullRequest
0 голосов
/ 10 февраля 2011

Я пытаюсь скопировать содержимое нескольких папок в одном каталоге в один новый файл.Все файлы, которые я хочу скопировать, имеют расширение .sql.

. Когда я пытаюсь это сделать - с одним каталогом - это работает:

directory>copy *.sql copy.sql

, но когда я пытаюсь

directory>copy */*.sql copy.sql

Я получаю

The syntax of the command is incorrect.

Что я делаю не так?Я думаю, что правильно следую указаниям на этом сайте , но не так ли?

Я не уверен, что это имеет значение, но я использую Windows 7.

TIA!

Ответы [ 3 ]

1 голос
/ 10 февраля 2011

То, что вы пытаетесь сделать, работает в Unix (bash / sh), но, к сожалению, не работает в Windows CMD.

В Windows CMD сделайте что-то вроде этого:

del result.sql && FOR /F %G IN ('"dir *.sql /s /b"') DO type %G >> result.sql

Будет удалено result.sql, и для каждого файла с именем * .sql в текущем и подкаталогах (dir *.sql /s /b) добавьте содержимое в result.sql (type filename >> result.sql).

Существует также команда FORFILES, но неясно, в какой версии Windows она была представлена.

del result.sql && FORFILES /S /M *.sql /C "cmd /c type @path" > result.sql

(Обратите внимание, что && - это просто способ добавления нескольких команд в строку и может быть заменен стандартным символом новой строки (\ r \ n).)

0 голосов
/ 10 февраля 2011

хорошо, я предполагаю, что все ваши sql-файлы являются текстовыми файлами, так что вы могли бы сделать что-то вроде

тип * .sql >> copy.sql

0 голосов
/ 10 февраля 2011

Не думаю, что это сработает.Стандартные командные оболочки Windows не выполняют сопоставление с подстановочными знаками для компонентов пути, а являются только последней частью аргумента пути.Кроме того, у вас есть косая черта, которая используется для аргументов команды

C:\> dir win*
 Volume in drive C is BSOD
 Volume Serial Number is 4AFF-AE03

 Directory of C:\

03/01/2011  07:58 AM    <DIR>          Windows
               0 File(s)              0 bytes
               1 Dir(s)  393,128,820,736 bytes free

, как и ожидалось, но делает

C:\> dir win*\sys*
The filename, directory name, or volume label syntax is incorrect.

и

C:\> dir windows\sys*
 Volume in drive C is BSOD
 Volume Serial Number is 4AFF-AE03

 Directory of C:\windows

13/07/2009  08:36 PM    <DIR>          system
10/06/2009  03:08 PM               219 system.ini
10/02/2011  07:55 AM    <DIR>          System32
09/02/2011  04:33 PM    <DIR>          SysWOW64
               1 File(s)            219 bytes
               3 Dir(s)  393,128,816,640 bytes free
...