• Администрация SafeZone приветствует вас на нашем форуме!
    Если вы больше не желаете видеть рекламу при просмотре тем и сообщений - то достаточно просто зарегистрироваться. Для зарегистрированных пользователей реклама не отображается.

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

Паразит

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

CMD/BATCH:
copy %* C:\111.txt
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,508
Симпатии
5,337
#2
Потому что copy для объединения нужно использовать +
Вам нужен цикл:
CMD/BATCH:
setlocal enabledelayedexpansion
for %%a in (%*) do if not defined t (set t=+) else (set t=!t!%%a+)
copy /b /y !t:~1,-1! "%~1"
Пример использования:
CMD/BATCH:
co 4.txt "1.txt" 2.txt 3.txt
Соединит файлы "1.txt" 2.txt 3.txt и сохранит под именем 4.txt
 

Паразит

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

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,508
Симпатии
5,337
#4
Dragokas, эта команда не так работает.
В каком смысле? Справку почитайте copy /?
Если так понятнее:
CMD/BATCH:
copy /b 1.txt + 2.txt + 3.txt result.txt
И между секциями в этом файле, нужно вставить какой-нибудь разделитель.
Тогда нужно создать ещё один файл с ====== и вставлять в команду, например:
CMD/BATCH:
setlocal enabledelayedexpansion
echo =======>s
for %%a in (%*) do set t=!t!%%a+s+
copy /b /y !t:~,-3! "result.txt"
del s