PDA

Показать полную графическую версию : Перемещение/Форматирование/Сортировка/Запись/Удаление


Маришка
24-05-2011, 00:55
Помогите составить пакетный файл для выполнения следующих действий:
а) перемещение всех файлов с flash-диска в рабочий каталог (номер flash-диска и каталог указываются в качестве параметров командной строки);
б) форматирование flash-диска;
в) сортировка файлов в следующие группы и запись каждой группы файлов в отдельный самораспаковывающийся гаг-архив:
группа 1 включает все файлы с именами, начинающимися на "data" и любым расширением, группа 2 включает все файлы, не вошедшие в группу 1;
г) запись полученных архивов на flash-диск;
д) удаление из рабочего каталога всех созданных в процессе работы данной программы файлов.

Delirium
24-05-2011, 01:05
Маришка, помочь можем, а вот написать за тебя - нет. Приводи пример, показывай где и что не работает, посмотрим. В противном случае помощи не будет.

Маришка
26-05-2011, 00:46
rem %1 - путь к flash-диску (F:\)
rem %2 - путь к рабочему каталогу (С:\windows\)
rem копирование в рабочий каталог
copy %1 %2
rem форматирование flash-диска
format %1
rem сортировка файлов для архивации в 1-ую группу
copy %1~data*.* %1~1
del %1~data*.*
rem сортировка файлов для архивации во 2-ую группу
copy %1~*.* %1~2
del %1~*.*
rem переход в директорию с архиватором
cd %1~Arj
rem архивирование 1-ой и 2-ой группы
arj a %1~1.arj %1~1
arj a %1~2.arj %1~2
rem перемещение архивов на flash-диск
copy %1~1.arj %1
copy %1~2.arj %1
rem удаление рабочих каталогов
rd %1~1
rd %1~2
rem выход
exit

проблема в синтаксисе который я не знаю(посмотрите ошибки пожалуйста

amel27
26-05-2011, 07:10
Маришка, непонятки с выбором архиватора - в 1-м посте заявлен RAR, а в примере ARJ. Вот вариант с ARJ32. Путь к архиватору должен быть прописан в переменной PATH, либо нужно в командной строке указать полный путь к ARJ32.EXE.:: %1 - путь к flash-диску (F:)
:: %2 - путь к рабочему каталогу (С:\FLASH_TEMP)

:: подавление вывода команд на экран
@echo off
:: проверка переданных параметров
if "%~2"=="" (
echo Не заданы параметры скрипта. Процесс прерван.[/color]
pause>Nul
exit
)
:: проверка наличия рабочего каталога
if not exist "%~2" (set "YN=Y"
) else set/p YN="Обнаружен рабочий каталог. Перезаписать? [YN]: "
:: удаление рабочего каталога в зависимости от выбора пользователя
if exist "%~2" if /i "%YN%"=="Y" (RD /S/Q "%~2") else (
echo Процесс прерван пользователем.
pause>Nul
exit
)
:: копирование в рабочий каталог
xcopy /s/r/h/y "%~1\*" "%~2\"
if errorlevel 1 (
echo Ошибка копирования. Процесс прерван.
pause>Nul
exit
)
:: форматирование flash-диска
Echo Y|format "%~1" /Q /FS:FAT32 /V:BAT
if errorlevel 1 (
echo Ошибка форматирования "%~1". Процесс прерван.
pause>Nul
exit
)
:: переход в рабочий каталог
pushd "%~2"
if errorlevel 1 (
echo Ошибка перехода в рабочий каталог "%~2". Процесс прерван.
pause>Nul
exit
)
:: архивация в 1-й группы
arj32 m "group1.arj" "data*" -r -p1
if errorlevel 1 (
echo Ошибка архивации файлов 1-й группы. Процесс прерван.
pause>Nul
exit
)
:: архивация в 2-й группы
arj32 m "group2.arj" "*" -r -p1 -xGroup1.arj
if errorlevel 1 (
echo Ошибка архивации файлов 2-й группы. Процесс прерван.
pause>Nul
exit
)
:: перемещение архивов на flash-диск
move /-y group?.arj "%~1"
if errorlevel 1 (
echo Ошибка перемещения архивов. Процесс прерван.
pause>Nul
exit
)
:: возвращение в каталог с батником
popd
:: удаление рабочего каталога
rd /s/q "%~2"
:: выход
exit

Маришка
27-05-2011, 05:20
pause>Nul

что такое Nul?

Iska
27-05-2011, 06:56
NUL: (http://en.wikipedia.org/wiki/NUL:) — т.н. пустое устройство; одно из зарезервированных имён устройств (http://en.wikipedia.org/wiki/Special_file#Device_files) в CP/M, DOS, Windows системах. Общее назначение и принципы функционирования в целом подобны Unix /dev/null (http://ru.wikipedia.org/wiki//dev/null).

amel27
27-05-2011, 12:25
что такое Nul? »подавление вывода сообщений любой команды (перенаправление в "никуда")
сравните результат PAUSE с ">NUL" и без него




© OSzone.net 2001-2012