Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Слить файлы в один

Ответить
Настройки темы
CMD/BAT - Слить файлы в один

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

вот что получилось сделать читая разные ссылки( но, если честно, немного не понимаю)
читать дальше »
@echo off

set tmp=
set param=
set last=

:get
if "%1"=="" goto end
set last=%1
shift
goto get
:end

if not exist %last% goto loop
choice /c:yn /m "File %last% already exists. Overwrite"
if errorlevel 2 pause

:loop
if "%1"=="" goto end1
type %1>%tmp%
set param=%param%%tmp%
shift
if exist %1 goto loop
:end1

echo %param%>%last%
echo OK...


вот ошибка:

123.jpg

Отправлено: 23:26, 30-10-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sPrev=%~1
set sLast=%~2
if not defined sLast echo Usage: %~nx0 ^<Source file1^> ^<Source file2^> ... ^<Destination file^>& exit /b 1

if not exist "%sPrev%" echo Can't find source file [%sPrev%].& exit /b 2
set sArgs="%sPrev%"

:Repeat
shift
set sPrev=%~1
set sLast=%~2
if defined sLast (
	if not exist "%sPrev%" echo Can't find source file [%sPrev%].& exit /b 2
	set sArgs=%sArgs%+"%sPrev%"
	goto :Repeat
)
set sLast=%sPrev%

copy /b %sArgs% "%sLast%"

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:26, 31-10-2013 | #2



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

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


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо за отзыв...
хотелось бы уточнить пару моментов, таких как:
Цитата:
setlocal enableextensions enabledelayedexpansion
%~1
%~nx0
/b 2
объясните, если не сложно, буду очень благодарен

Последний раз редактировалось p1ka4y777, 31-10-2013 в 01:34.


Отправлено: 01:00, 31-10-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
setlocal /?
call /?
exit /?
На конкретные вопросы будут даваться ответы.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:07, 31-10-2013 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Слить файлы в один

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - как слить два архива в один bulchonok Скриптовые языки администрирования Windows 2 07-04-2013 21:27
[решено] "Слить" в один файл все текстовые файлы из папки sashadeg AutoIt 2 05-03-2010 16:25
HDD - Слить два HDD в один!? Antoniooo Накопители (SSD, HDD, USB Flash) 9 25-08-2008 18:39
Не запускаються ехе файлы. Ни один - 2 zhefran Лечение систем от вредоносных программ 5 14-05-2008 19:19
[решено] Не запускаються ехе файлы. Ни один. zhefran Лечение систем от вредоносных программ 9 13-05-2008 13:12




 
Переход