Склеить два файла cmd

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

В командной строке Windows NT/2000/XP можно использовать специальные символы, которые позволяют вводить несколько команд одновременно и управлять работой команд в зависимости от результатов их выполнения. С помощью таких символов условной обработки можно содержание небольшого пакетного файла записать в одной строке и выполнить полученную составную команду.

Используя символ амперсанда & , можно разделить несколько утилит в одной командной строке, при этом они будут выполняться друг за другом. Например, если набрать команду DIR & PAUSE & COPY / ? и нажать клавишу , то вначале на экран будет выведено содержимое текущего каталога, а после нажатия любой клавиши — встроенная справка команды COPY .

Символ ^ позволяет использовать командные символы как текст, то есть при этом происходит игнорирование значения специальных символов. Например, если ввести в командной строке

и нажать клавишу , то произойдет выполнение подряд двух команд: ECHO Абв и COPY / ? (команда ECHO выводит на экран символы, указанные в командной строке после нее). Если же выполнить команду

то на экран будет выведено

В этом случае просто выполняется одна команда ECHO с соответствующими параметрами.

Условная обработка команд в Windows осуществляется с помощью символов && и || следующим образом. Двойной амперсанд && запускает команду, стоящую за ним в командной строке, только в том случае, если команда, стоящая перед амперсандами была выполнена успешно. Например, если в корневом каталоге диска C: есть файл plan.txt, то выполнение строки TYPE C:\plan.txt && DIR приведет к выводу на экран этого файла и содержимого текущего каталога. Если же файл C:\plan.txt не существует, то команда DIR выполняться не будет.

Два символа || осуществляют в командной строке обратное действие, т.е. запускают команду, стоящую за этими символами, только в том случае, если команда, идущая перед ними, не была успешно выполнена. Таким образом, если в предыдущем примере файл C:\plan.txt будет отсутствовать, то в результате выполнения строки TYPE C:\plan.txt || DIR на экран выведется содержимое текущего каталога.

Отметим, что условная обработка действует только на ближайшую команду, то есть в строке

команда COPY / ? запустится в любом случае, независимо от результата выполнения команды TYPE C:\plan.txt .

Несколько утилит можно сгруппировать в командной строке с помощью скобок. Рассмотрим, например, две строки:

В первой из них символ условной обработки && действует только на команду DIR , во второй — одновременно на две команды: DIR и COPY .

Примеры команд для работы с файловой системой

Рассмотрим некоторые наиболее часто используемые команды для работы с файловой системой. Отметим сначала несколько особенностей определения путей к файлам в Windows.

Пути к объектам файловой системы

Напомним, что файловая система логически имеет древовидную структуру и имена файлов задаются в формате [диск:][путь\]имя_файла , то есть обязательным параметром является только имя файла. При этом, если путь начинается с символа "\" , то маршрут вычисляется от корневого каталога, иначе — от текущего каталога. Например, имя C:123.txt задает файл 123.txt в текущем каталоге на диске C:, имя C:\123.txt — файл 123.txt в корневом каталоге на диске C:, имя ABC\123.txt — файл 123.txt в подкаталоге ABC текущего каталога.

Существуют особые обозначения для текущего каталога и родительского каталогов. Текущий каталог обозначается символом . (точка), его родительский каталог — символами .. (две точки). Например, если текущим каталогом является C:\WINDOWS, то путь к файлу autoexec.bat в корневом каталоге диска C: может быть записан в виде ..\autoexec.bat.

В именах файлов (но не дисков или каталогов) можно применять так называемые групповые символы или шаблоны: ? (вопросительный знак) и * (звездочка). Символ * в имени файла означает произвольное количество любых допустимых символов, символ ? — один произвольный символ или его отсутствие. Скажем, под шаблон text??1.txt подходят, например, имена text121.txt и text911.txt, под шаблон text*.txt — имена text.txt, textab12.txt, а под шаблон text.* — все файлы с именем text и произвольным расширением.

Для того, чтобы использовать длинные имена файлов при работе с командной строкой, их нужно заключать в двойные кавычки. Например, чтобы запустить файл с именем 'Мое приложение.exe' из каталога 'Мои документы', нужно в командной строке набрать "C:\Мои документы\Мое приложение.exe" и нажать клавишу .

Перейдем теперь непосредственно к командам для работы с файловой системой.

Команда CD

Текущий каталог можно изменить с помощью команды

Путь к требуемому каталогу указывается с учетом приведенных выше замечаний. Например, команда CD \ выполняет переход в корневой каталог текущего диска. Если запустить команду CD без параметров, то на экран будут выведены имена текущего диска и каталога.

Команда COPY

Одной из наиболее часто повторяющихся задач при работе на компьютере является копирование и перемещение файлов из одного места в другое. Для копирования одного или нескольких файлов используется команда COPY .

Синтаксис этой команды:

Краткое описание параметров и ключей команды COPY приведено в табл. 2.1.

Приведем примеры использования команды COPY .

  1. Копирование файла abc.txt из текущего каталога в каталог D:\PROGRAM под тем же именем:

Если не задать в команде целевой файл, то команда COPY создаст копию файла-источника с тем же именем, датой и временем создания, что и исходный файл, и поместит новую копию в текущий каталог на текущем диске. Например, для того, чтобы скопировать все файлы из корневого каталога диска A: в текущий каталог, достаточно выполнить такую краткую команду:

В качестве источника или результата при копировании можно указывать имена не только файлов, но и устройств компьютера. Например, для того, чтобы распечатать файл abc.txt на принтере, можно воспользоваться командой копирования этого файла на устройство PRN : COPY abc.txt PRN

Другой интересный пример: создадим новый текстовый файл и запишем в него информацию, без использования текстового редактора. Для этого достаточно ввести команду COPY CON my.txt , которая будет копировать то, что вы набираете на клавиатуре, в файл my.txt (если этот файл существовал, то он перезапишется, иначе — создастся). Для завершения ввода необходимо ввести символ конца файла, то есть нажать клавиши + .

Команда COPY может также объединять (склеивать) несколько файлов в один. Для этого необходимо указать единственный результирующий файл и несколько исходных. Это достигается путем использования групповых знаков (? и *) или формата файл1 + файл2 + файл3. Например, для объединения файлов 1.txt и 2.txt в файл 3.txt можно задать следующую команду:

Объединение всех файлов с расширением dat из текущего каталога в один файл all.dat может быть произведено так:

Ключ /B здесь используется для предотвращения усечения соединяемых файлов, так как при комбинировании файлов команда COPY по умолчанию считает файлы текстовыми.

Если имя целевого файла совпадает с именем одного из копируемых файлов (кроме первого), то исходное содержимое целевого файла теряется. Если имя целевого файла опущено, то в его качестве используется первый файл из списка. Например, команда COPY 1.txt+2.txt добавит к содержимому файла 1.txt содержимое файла 2.txt. Командой COPY можно воспользоваться и для присвоения какому-либо файлу текущей даты и времени без модификации его содержимого. Для этого нужно ввести команду типа

Здесь запятые указывают на пропуск параметра приемника, что и приводит к требуемому результату.

Команда COPY имеет и свои недостатки. Например, с ее помощью нельзя копировать скрытые и системные файлы, файлы нулевой длины, файлы из подкаталогов. Кроме того, если при копировании группы файлов COPY встретит файл, который в данный момент нельзя скопировать (например, он занят другим приложением), то процесс копирования полностью прервется, и остальные файлы не будут скопированы.

Команда XCOPY

Указанные при описании команды COPY проблемы можно решить с помощью команды XCOPY , которая предоставляет намного больше возможностей при копировании. Необходимо отметить, правда, что XCOPY может работать только с файлами и каталогами, но не с устройствами.

Синтаксис этой команды:

Команда XCOPY имеет множество ключей, мы коснемся лишь некоторых из них. Ключ /D[:[дата]] позволяет копировать только файлы, измененные не ранее указанной даты. Если параметр дата не указан, то копирование будет производиться только если источник новее результата. Например, команда

скопирует в каталог 'D:\BACKUP\Мои документы' только те файлы из каталога 'C:\Мои документы', которые были изменены со времени последнего подобного копирования или которых вообще не было в 'D:\BACKUP\Мои документы'.

Ключ /S позволяет копировать все непустые подкаталоги в каталоге-источнике. С помощью же ключа /E можно копировать вообще все подкаталоги, включая и пустые.

Если указан ключ /C , то копирование будет продолжаться даже в случае возникновения ошибок. Это бывает очень полезным при операциях копирования, производимых над группами файлов, например, при резервном копировании данных.

Ключ /I важен для случая, когда копируются несколько файлов, а файл назначения отсутствует. При задании этого ключа команда XCOPY считает, что файл назначения должен быть каталогом. Например, если задать ключ /I в команде копирования всех файлов с расширением txt из текущего каталога в несуществующий еще подкаталог TEXT,

то подкаталог TEXT будет создан без дополнительных запросов.

Ключи /Q , /F и /L отвечают за режим отображения при копировании. При задании ключа /Q имена файлов при копировании не отображаются, ключа /F — отображаются полные пути источника и результата. Ключ /L обозначает, что отображаются только файлы, которые должны быть скопированы (при этом само копирование не производится).

С помощью ключа /H можно копировать скрытые и системные файлы, а с помощью ключа /R — заменять файлы с атрибутом "Только для чтения". Например, для копирования всех файлов из корневого каталога диска C: (включая системные и скрытые) в каталог SYS на диске D:, нужно ввести следующую команду:

Ключ /T позволяет применять XCOPY для копирования только структуры каталогов источника, без дублирования находящихся в этих каталогах файлов, причем пустые каталоги и подкаталоги не включаются. Для того, чтобы все же включить пустые каталоги и подкаталоги, нужно использовать комбинацию ключей /T /E .

Используя XCOPY можно при копировании обновлять только уже существующие файлы (новые файлы при этом не записываются). Для этого применяется ключ /U . Например, если в каталоге C:\2 находились файлы a.txt и b.txt, а в каталоге C:\1 — файлы a.txt, b.txt, c.txt и d.txt, то после выполнения команды

в каталоге C:\2 по-прежнему останутся лишь два файла a.txt и b.txt, содержимое которых будет заменено содержимым соответствующих файлов из каталога C:\1.Если с помощью XCOPY копировался файл с атрибутом "Только для чтения", то по умолчанию у файла-копии этот атрибут снимется. Для того, чтобы копировать не только данные, но и полностью атрибуты файла, необходимо использовать ключ /K .

Ключи /Y и /-Y определяют, нужно ли запрашивать подтверждение перед заменой файлов при копировании. /Y — подавление запроса подтверждения на перезапись существующего целевого файла, /-Y — запрос подтверждения на перезапись существующего целевого файла.

мне нужно объединить некоторые относительно большие текстовые файлы, и я предпочел бы сделать это с помощью командной строки. К сожалению, у меня есть только Windows, и я не могу установить новое программное обеспечение.

позволяет мне почти получить то, что я хочу, но я не хочу 1-й строки file2.txt должен быть включен в out.формат txt.

Я заметил, что more имеет +n возможность указать начальную линию, но мне не удалось объединить их, чтобы получить желаемый результат. Я знаю, что это может быть невозможно в Windows, и я всегда могу редактировать.txt вручную, чтобы избавиться от строки, но есть ли простой способ сделать это из командной строки?

или вы можете использовать copy . Смотрите copy /? дополнительные.

Я использую это, и это работает хорошо для меня:

TYPE \Server\Share\Folder\*.csv >> C:\Folder\ConcatenatedFile.csv

конечно, перед каждым запуском, вы должны DELETE C:\Folder\ConcatenatedFile.csv

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

у меня не хватает очков репутации, чтобы прокомментировать рекомендацию использовать *.csv >> ConcatenatedFile.csv , но я могу добавить предупреждение:

при создании ConcatenatedFile.csv файл в том же каталоге, который вы используете для конкатенации он будет добавлен к себе.

Я бы поставил это в комментарии к ghostdog74, за исключением того, что моя репутация слишком низкая, так что здесь идет.

more +2 file2.txt > temp
Этот код фактически игнорирует строки 1 и 2 файла. OP хочет сохранить все строки из первого файла (чтобы сохранить строку заголовка), а затем исключить первую строку (предположительно ту же строку заголовка) во втором файле, поэтому для исключения только строки заголовка OP должен использовать more +1 .

type temp file1.txt > out.txt

Неясно, какой порядок вытекает из этого кода. Это temp добавляется file1.txt (желаемое), или file1.txt добавляется temp (нежелательно, так как строка заголовка будет похоронена в середине результирующего файла).

Кроме того, эти операции занимают очень много времени с большими файлами (например, 300 МБ)

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

попробовав целую кучу команд в windows и сильно расстроившись, а также попробовав всевозможные графические редакторы, которые обещали быть в состоянии чтобы открыть большие файлы, но потом не смог, я, наконец, вернулся к своим корням Linux и открыл приглашение Cygwin. Две команды:

на file1.csv 800 МБ и file2.csv 400 МБ, эти две команды заняли менее 5 секунд на моей машине. В подсказке Cygwin, не меньше. Я думал, что команды Linux должны быть медленными в Cygwin, но этот подход потребовал гораздо меньше усилий и был намного проще, чем любой подход windows, который я мог найти.

Объединить каждую группу одноимённых текстовых файлов из разных папок в один файл с соответствующим именем
Добрый вечер. Имеются базы в формате тхт в разных папках. Нужно скопировать + дописать из этих.

Объединить содержимое текстовых файлов в одном массиве
Я умею считывать все строки файла в string массив (IO.File.ReadAllLines). Имеется.


Как объединить несколько текстовых файлов в один
Есть несколько текстовых файлов. Конкретно 4. Как мне объединить их в один? Если я возьму такой.

Обращаются ко мне с жалобой, что компьютер грузится минут 15 (после бегунка Windows появляется черный экран и так он висит минут 15, потом таки Windows довольно шустро загружается), но после этого вроде всё нормально работает. Такое конечно бывает, но смущало что компьютер довольно новый.

Удаление папки . (три точки)

Иногда приходится встречаться с ситуацией когда в корне диска появляется папка . (три точки) и удаляться она никак не хочет. Чаще всего начинают кричать про вирусы, но в моем случае, причиной появления такой папки был всегда Total Commander при работе с архивами.

Смена материнской платы без переустановки Windows

Поскольку моя жизнь тесно связана с компьютерами, мой домашний питомец (компьютер) как и рабочий, довольно часто меняют свою конфигурацию. Меняю по разным причинам, устаревание, недостаток мощности, какие то эксклюзивные примочки и просто ради интереса потестить новую железку.

Последние обновления

Не работает сканирование QR кода на устройствах Apple с настроенным профилем

Если ваши устройства Apple настроены с помощью профилей MDM или Apple Configurator, то вы можете столкнуться с ситуацией что они не считывают QR код. Проявляется это если у вас настроен список разрешенных приложений.

Исправляем ошибку истекшего сертификата R3 при использовании Let's Encrypt

Рутина MySQL

Объединение файлов стандартными средствами Windows

Довольно часто мне приходится работать с проектами на GIThub, то бишь с исходниками, но они чаще все разбиты на кучи файлов (к примеру js и css). Но это довольно неудобно в использовании, поэтому есть смысл их объединять в один файл как и в готовых релизах. Заморачиваться с какими сторонними программами для сборки не хотелось, поэтому решено было использовать для этого уже имеющиеся под рукой средства, то бишь стандартные средства Windows.
В данном случае отлично подходит команда copy. К примеру объединим несколько js файлов:
Если файлов немного, то их можно объединить следующим образом Если файлов много то можно объединить их все по типу пределах текущего каталога

Параметр /b нужен для того чтобы файлы объединялись как бинарные, в противном случае в самом конце файла добавляется лишний символ → . Полный список параметров можно посмотреть командой: copy /?

Файлы обединятся в том порядке в каком их видно по команде dir , поэтому если важен порядок файлов то предварительно их стоит переименовать добавив в начало файла цифровой индекс.

© 2022 Legion Leonhart. При полном или частичном копировании материалов сайта - активная ссылка на сайт обязательна.

Читайте также: