Показать полную графическую версию : Выполнение команды для списка файлов
MrDmitri
14-07-2017, 10:55
Срочно) Напишите пожалуйста любой простой пример по этой функции FOR %x IN (список файлов) DO команда. Объясните подробно)
MrDmitri, откройте командную строку. Наберите в ней:
for /?
Читайте.
@echo off
chcp 866
rem recursive Packing (move) files to archive in subfolders
rem запаковка в rar файлов по указаннному расширению с удалением исходного файла. -move
rem на вход - папка и в ней копаемся. Для уменьшения размеров библиотеки с книгами. ;-)
@rem filename == archivename
@rem check parameters
@if "%~1"=="" goto :NoParam
@chdir /d %1
@if %errorlevel% neq 0 goto :NoParam
@if exist packErr.log del packErr.log
echo ^---------------------------------------------------
echo.
set /p ext=[ Enter file Extensions for Packing ] :
rem main loop
for /f "delims=%%" %%i in ('dir /s /b *.%ext%') do ("%~dp0..\Plugins\arc\rar.exe" m -m5 -ep -ri3 "%%~dpni".rar "%%i") 2>packErr.log
if exist packErr.log start "%SYSTEMROOT%\notepad.exe" packErr.log
exit
rem В случае успешного окончания операции WinRAR завершает работу с нулевым (0) кодом возврата.
rem Если код возврата отличается от нулевого, это говорит о том, что произошла какая-то ошибка.
rem Код возврата Описание
rem :0
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% Операция успешно завершена.
rem exit
rem :1
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% Предупреждение. Произошли некритические ошибки.
rem pause
rem exit
rem :2
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% . Произошла критическая ошибка.
rem rem pause
rem exit
rem exit
rem :3
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% При распаковке обнаружена ошибка CRC.
rem pause
rem exit
rem exit
rem :4
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% Предпринята попытка изменить заблокированный архив.
rem pause
rem exit
rem :5
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% Произошла ошибка записи на диск.
rem pause
rem exit
rem :6
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% Произошла ошибка открытия файла.
rem pause
rem exit
rem :7
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% Ошибка при указании параметра в командной строке.
rem pause
rem exit
rem :8
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% Недостаточно памяти для выполнения операции.
rem pause
rem exit
rem :9
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% Ошибка при создании файла.
rem pause
rem exit
rem :255
rem echo ^================= ERRORLEVEL: %ERRORLEVEL% Операция была прервана пользователем.
rem pause
rem exit
:NoParam
echo.
ECHO ================= %~n0. Command line error: "%*"
pause
EXIT /B 1
Скажите, Пал Андреич — Вы шпион? x0r, Вы так решили поиздеваться над коллегой MrDmitri ;)?
простой пример »
P.S. И он просил for, а не for /f.
Iska, в справке тоже нет простого примера для файлов
да и как по мне, так очевидно, что писал это человек сидящий на зачёте/экзамене/контрольной - откуда у него в телефоне консоль Windows? :-))))
никак нет, отчего ж поиздеваться :) Совершенно нет. просил пример - дал пример. Я подумал что человек как и я, не сильно может читать справку, ему на реальном примере понятней будет. Для мя так и есть: справка это хорошо и правильно. Да вот, лучше понимаю, когда вижу\щупаю чёнить конкретное. живой пример, хехех....
зы. кстати, может подскажете как изменить этовсё. файл ошибок создается всегда, даже если ошибок нету. Ну и соотв. открывается. Пустой.
это можно обойти, чтоб не создавался файл если ошибок нет :search:
Iska, в справке тоже нет простого примера для файлов »
Да, Вы правы.
файл ошибок создается всегда, даже если ошибок нету. Ну и соотв. открывается. Пустой. »
Всё правильно.
это можно обойти, чтоб не создавался файл если ошибок нет »
В таком виде — нет, нельзя. Но можно проверять его размер на равенство 0.
megaloman
15-07-2017, 23:15
x0r, можно проверять его размер на равенство 0 » @Echo Off
cls
Set "Log=packErr.log"
Set Arc="C:\Program Files\WinRAR\Rar.exe" m -m5 -ep -ri3
Set "ArcExt=rar"
if "%~1"=="" (
Echo:
:Abend
Echo --- "%~dpnx0" "%*" Command line error
pause
EXIT /B 1
)
Pushd "%~1"|| GoTo :Abend
Echo ---------------------------------------------------
Echo:
Set /P Ext=[ Enter file Extensions for Packing ] :
2>"%Log%" (FOR /R "%~1" %%f IN ("*.%Ext%") DO Echo %%f &%Arc% "%%~dpnf.%ArcExt%" "%%f" >nul)
FOR %%f IN ("%Log%") DO If %%~zf==0 (Del "%Log%") Else (Start " " "%SYSTEMROOT%\notepad.exe" "%Log%")
Popd
Выделенная строка - проверка на нулевой размер или запуск редактора. Кстати, notepad.exe не годится для просмотра файлов в 866 кодировкев справке тоже нет простого примера для файлов »
Примеров в сети куча, например здесь (http://www.cyberforum.ru/cmd-bat/thread877664.html)
писец ;-) нашел как на CyberForum (http://www.cyberforum.ru/cmd-bat/thread909275.html)
@echo off
rem если в имени папки будет смешение языков. нопример орочьего(укр.) и русского, то будет ошибка.
rem если же сделать файл в UTF-8 (chcp 65001) то пакует без вопросов, но нифига не видно, в консоли кракозябры.
@chcp 866
rem recursive Packing (move) files to archive in subfolders
rem запаковка в rar файлов по указаннному расширению с удалением исходного файла. -move
rem на вход - папка . Для уменьшения размеров библиотеки с книгами.
rem check parameters
@if "%~1"=="" goto :NoParam
@chdir /d %1
@if %errorlevel% neq 0 goto :NoParam
@if exist packErr.log del packErr.log
echo ^---------------------------------------------------
echo.
set /p ext=[ Enter file Extensions for Packing ] :
rem main loop
for /f "delims=%%" %%i in ('dir /s /b *.%ext%') do ("%~dp0..\Plugins\arc\rar.exe" m -m5 -ep -ri3 "%%~dpni".rar "%%i") 2>packErr.log
rem если ошибок не было и файл нулевой, то выход, не открываем
for %%i in (packErr.log) do (set /a size=%%~Zi)
if %size% == 0 (goto :EOF) else (if exist packErr.log start "%SYSTEMROOT%\notepad.exe" packErr.log)
exit
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.