Работает ли добавление (объединение) файлов вместе с XCOPY?
Я хочу объединить несколько (текстовых) файлов с одинаковым префиксом в один файл. Эта задача является частью целого пакета (в VBScript), но из-за ожиданий производительности я, скорее всего, буду использовать собственную команду, а не программировать цикл (открывать каждый файл, считывать все содержимое, а затем записывать его в конечный файл) в VBScript.
В настоящее время возникла проблема с COPY
, которая, похоже, требует, чтобы вы очистили буфер StdOut (потому что он выводит имена всех файлов, которые он копирует) Я смотрел в сторону XCOPY
, у которого намного больше флагов для настройки его поведения и вывода (например, /Q
, который Подавляет отображение сообщений xcopy).
Чтение документа: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb491035(v=technet.10)
Я наткнулся на это:
Добавление файлов
Чтобы добавить файлы, укажите один файл для назначения, но несколько файлов для источника (то есть с помощью подстановочных знаков или формата file1+file2+file3).
Хорошо, поэтому я пишу: xcopy "My file pattern whatsoever.*.tmp" "My destination file.tmp"
К сожалению, он спрашивает, является ли My destination file.tmp
файлом или каталогом, на который я должен ответить либо F
(для файла), либо D
(для каталога). Примечание: это зависит от языка (в моем случае - французский - это F или R).
Я заметил это в приведенном выше документе:
Указание, является ли место назначения файлом или каталогом
Если пункт назначения не содержит существующий каталог и не заканчивается обратной косой чертой (), появляется следующее сообщение:
Does destination specify a file name or directory name on the target (F = file, D = directory)?
Нажмите F, если вы хотите, чтобы файл или файлы были скопированы в файл. Нажмите D, если вы хотите, чтобы файл или файлы были скопированы в каталог.
Это сообщение можно отключить с помощью параметра командной строки /i, который заставляет xcopy предполагать, что местом назначения является каталог, если источником является несколько файлов или каталогов.
Ну, как это /i
флаг не соответствует моим потребностям, я прибегаю к уловке, которую читаю здесь и там, например (среди ответов): https://stackoverflow.com/a/45134466
Поэтому я попробую это: echo F|xcopy "My file pattern whatsoever.*.tmp" "My destination file.tmp"
Хорошо, теперь первый файл копируется в файл назначения, но для каждого следующего файла появляется вопрос о замене файла назначения (?!!).
Кстати, все они отбрасываются, потому что команда echo
не предоставляет для них никаких входных данных.
Если я использую этот флаг:
/ у : Подавляет запрос подтверждения того, что вы хотите перезаписать существующий файл назначения.
Затем я получаю конечный файл, содержащий только содержимое последнего файла, который я хочу объединить (т.Е. Последний файл, соответствующий исходному шаблону)!!!
Я также попытался проверить, работает ли он только с двумя файлами, например: xcopy "My file pattern whatsoever.0001.tmp"+"My file pattern whatsoever.0002.tmp" "My destination file.tmp" but I get an error:
Файл не найден - Мой шаблон файла вообще.0001.tmp+Мой шаблон файла вообще.0002.tmp`
То же самое, если я добавлю пробелы вокруг +
; говорит Invalid number of parameters
, вероятно, потому, что синтаксис file1+file2+file3 не работает с длинными (включая пробелы) именами файлов, как предлагается здесь: https://stackoverflow.com/questions/30651776/xcopy-returns-error-invalid-number-of-parameters-when-exclude-parameter-is-set
Так что же плохого в том, что я делаю (или пытаюсь)?