Объединение файлов, переданных через аргумент

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем Паразит, 8 фев 2017.

  1. Паразит

    Паразит Пользователь

    Сообщения:
    52
    Симпатии:
    1
    Привет. Почему у меня не получается объединить файлы переданные через переменную "%*"?
    Вот я батнику передаю файлы в виде аргументов, и хочу, чтобы он их собрал в один.

    Код (DOS):
    copy %* C:\111.txt
     
  2. Dragokas

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    5.320
    Симпатии:
    5.227
    Потому что copy для объединения нужно использовать +
    Вам нужен цикл:
    Код (DOS):

    setlocal enabledelayedexpansion
    for %%a in (%*) do if not defined t (set t=+) else (set t=!t!%%a+)
    copy /b /y !t:~1,-1! "%~1"
     
    Пример использования:
    Код (DOS):

    co 4.txt "1.txt" 2.txt 3.txt
     
    Соединит файлы "1.txt" 2.txt 3.txt и сохранит под именем 4.txt
     
  3. Паразит

    Паразит Пользователь

    Сообщения:
    52
    Симпатии:
    1
    Dragokas, эта команда не так работает.
    Надо, чтобы переданные файлы собрались в другой файл.
    И между секциями в этом файле, нужно вставить какой-нибудь разделитель.
    Например, "=======".
     
  4. Dragokas

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    5.320
    Симпатии:
    5.227
    В каком смысле? Справку почитайте copy /?
    Если так понятнее:
    Код (DOS):

    copy /b 1.txt + 2.txt + 3.txt result.txt
     
    Тогда нужно создать ещё один файл с ====== и вставлять в команду, например:
    Код (DOS):

    setlocal enabledelayedexpansion
    echo =======>s
    for %%a in (%*) do set t=!t!%%a+s+
    copy /b /y !t:~,-3! "result.txt"
    del s
     
     
Загрузка...

Поделиться этой страницей

Загрузка...