Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Выполнение команды для списка файлов (http://forum.oszone.net/showthread.php?t=328332)

MrDmitri 14-07-2017 10:55 2751305

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

Iska 14-07-2017 14:59 2751385

MrDmitri, откройте командную строку. Наберите в ней:
Код:

for /?
Читайте.

x0r 14-07-2017 17:12 2751403

Скрытый текст
Код:

@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


Iska 14-07-2017 17:19 2751408

Скажите, Пал Андреич — Вы шпион? x0r, Вы так решили поиздеваться над коллегой MrDmitri ;)?
Цитата:

Цитата MrDmitri
простой пример »

P.S. И он просил for, а не for /f.

Busla 15-07-2017 10:45 2751543

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

x0r 15-07-2017 17:56 2751636

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

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

Iska 15-07-2017 20:38 2751673

Цитата:

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

Да, Вы правы.

Цитата:

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

Всё правильно.

Цитата:

Цитата x0r
это можно обойти, чтоб не создавался файл если ошибок нет »

В таком виде — нет, нельзя. Но можно проверять его размер на равенство 0.

megaloman 15-07-2017 23:15 2751704

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
в справке тоже нет простого примера для файлов »

Примеров в сети куча, например здесь

x0r 17-07-2017 22:31 2752111

писец ;-) нашел как на 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



Время: 12:11.

Время: 12:11.
© OSzone.net 2001-