Слить файлы в один
Вложений: 1
недавно начал изучать командную строку, подошел к пакетной обработки данных и затупил на этом задании: нужно слить файлы в один, и в качестве параметров принимать имена файлов и слить все эти файлы в файл имя которого задано последним. Если такой файл уже существует - запросить у пользователя разрешение на перезапись. Если хоть один из файлов несуществует - завершить работу с ошибкой и выводом помощи.
вот что получилось сделать читая разные ссылки( но, если честно, немного не понимаю)
читать дальше »
@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...
вот ошибка:
Файл 106050
|
Цитата:
Цитата 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
|
спасибо за отзыв...
хотелось бы уточнить пару моментов, таких как:
Цитата:
setlocal enableextensions enabledelayedexpansion
%~1
%~nx0
/b 2
|
объясните, если не сложно, буду очень благодарен
|
Код:
setlocal /?
call /?
exit /?
На конкретные вопросы будут даваться ответы.
|
Время: 22:13.
© OSzone.net 2001-