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

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

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

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


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

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


Срочно) Напишите пожалуйста любой простой пример по этой функции FOR %x IN (список файлов) DO команда. Объясните подробно)

Отправлено: 10:55, 14-07-2017

 

Ветеран


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

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


MrDmitri, откройте командную строку. Наберите в ней:
Код: Выделить весь код
for /?
Читайте.

Отправлено: 14:59, 14-07-2017 | #2



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

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

x0r x0r вне форума

Забанен


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

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


Скрытый текст
Код: Выделить весь код
@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

Отправлено: 17:12, 14-07-2017 | #3


Ветеран


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

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


Скажите, Пал Андреич — Вы шпион? x0r, Вы так решили поиздеваться над коллегой MrDmitri ?
Цитата MrDmitri:
простой пример »
P.S. И он просил for, а не for /f.

Отправлено: 17:19, 14-07-2017 | #4


Ветеран


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

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


Iska, в справке тоже нет простого примера для файлов
да и как по мне, так очевидно, что писал это человек сидящий на зачёте/экзамене/контрольной - откуда у него в телефоне консоль Windows? :-))))

Отправлено: 10:45, 15-07-2017 | #5

x0r x0r вне форума

Забанен


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

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


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

зы. кстати, может подскажете как изменить этовсё. файл ошибок создается всегда, даже если ошибок нету. Ну и соотв. открывается. Пустой.
это можно обойти, чтоб не создавался файл если ошибок нет

Отправлено: 17:56, 15-07-2017 | #6


Ветеран


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

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


Цитата Busla:
Iska, в справке тоже нет простого примера для файлов »
Да, Вы правы.

Цитата x0r:
файл ошибок создается всегда, даже если ошибок нету. Ну и соотв. открывается. Пустой. »
Всё правильно.

Цитата x0r:
это можно обойти, чтоб не создавался файл если ошибок нет »
В таком виде — нет, нельзя. Но можно проверять его размер на равенство 0.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:38, 15-07-2017 | #7


Ветеран


Contributor


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

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


x0r,
Цитата Iska:
можно проверять его размер на равенство 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 кодировке
Цитата Busla:
в справке тоже нет простого примера для файлов »
Примеров в сети куча, например здесь

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-07-2017 в 23:21.

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

Отправлено: 23:15, 15-07-2017 | #8

x0r x0r вне форума

Забанен


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

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


писец ;-) нашел как на CyberForum
Код: Выделить весь код
@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

Отправлено: 22:31, 17-07-2017 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Запрос параметров и выполнение команды sea707 Скриптовые языки администрирования Windows 2 25-10-2012 12:46
CMD/BAT - [решено] выполнение команды cmd caustic Скриптовые языки администрирования Windows 5 20-03-2011 08:51
CMD/BAT - выполнение команд из списка в txt файле systemroot Скриптовые языки администрирования Windows 2 12-02-2011 17:49
запрет запуска (на выполнение) файлов для обыкновенных пользователей theambient Microsoft Windows 2000/XP 2 03-08-2009 12:09
CMD/BAT - [решено] удаленное выполнение команды Diver1 Скриптовые языки администрирования Windows 2 20-03-2009 10:39




 
Переход