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

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

Ответить
Настройки темы
CMD/BAT - Необходимо сделать два батника,подскажите ошибки

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


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

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


Изменения
Автор: CyberNoble
Дата: 23-10-2019
Описание: Выделил код,нашел решение на первое
Нужно создать батник,который копирует все файлы в расширении .txt ,кроме одного ,который задан в параметре %2,в директорию ,заданную параметром %1
Сделал вот такой
Код: Выделить весь код
@echo off
REM вывод каталога
FOR %%a IN (*.txt) DO IF NOT %%a == %2 COPY %%a %1
Но он копирует все файлы в формате txt,думаю,что проблема в 99% в том,что я не так использую IF в цикле.Нужно именно через цикл

И второе задание такое,что нужно написать пакетный файл, который автоматически удалял бы в каталоге, указанном в командной строке все файлы, размер которых превышает 2 Мбайт.
Была идея сделать через сортировку по размеру в dir ,а потом в find,но дир просто по порядку их делает,там нельзя сделать так,чтобы файлы не удовлетворяющие размеру не показывались,поэтому пока не выходит.У одногруппника идея была,что нгужно создать переменную с размером,и сравнивать с ней,но мы так и не знаем как сделат ьпо уму

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

Отправлено: 16:43, 23-10-2019

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Iska, про эту фишку я на прошлой неделе вычитал в книжке "PowerShell in Depth".
Where и foreach умеют быть методом, причём это работает быстрее, чем при передаче через пайп, как мы все привыкли. Сам не проверял быстродействие, но в книжке пользовались Measure-Command, разница в некоторых случаях в разы.

Правильнее, конечно, писать .where({}), но в данном случае можно и без круглых скобок.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 22:29, 25-10-2019 | #11



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

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


Ветеран


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

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


alpap, это-то я знаю. Но точка… Как это понимать? Откуда такой синтаксис вместо:
Код: Выделить весь код
Get-ChildItem -Path "C:\temp" | Where-Object -FilterScript {$_.Length -gt 2MB}
Где об этом можно почитать?

DJ Mogarych, спасибо, ясно. Там были какие-то разъяснения, откуда сие взялось, и в каких случаях это «умеют» работает?

Ага. Нашёл:
Скрытый текст
Цитата:
7.5.3 The Where method

PowerShell v4 introduced another way to filter a collection of objects. This method
isn’t well documented, nor is it easily discoverable, yet it’s relatively easy to use and
performs well. Basically, you can use Where as a method:
Код: Выделить весь код
(Get-Service m*).Where{$_.status -eq "stopped"}

и т.д.

Отправлено: 22:30, 25-10-2019 | #12


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Цитата из книжки:
Цитата:
В Powershell v4 появился новый способ фильтровать набор объектов. Этот способ как следует не задокументирован и его нелегко обнаружить, тем не менее, он относительно прост в использовании и хорошо работает.
Один из примеров:
Код: Выделить весь код
(Get-Process | sort Handles).Where({$_.Handles -gt 1000}, "SkipUntil", 1)

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 22:43, 25-10-2019 | #13


Ветеран


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

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


А вот и разница проклюнулась:
Скрытый текст
Код: Выделить весь код
 Get-ChildItem -Path "C:\Мои проекты\0282" | Where-Object -FilterScript {$_.Length -gt 2MB}
(Get-ChildItem -Path "C:\Мои проекты\0282" | Where-Object -FilterScript {$_.Length -gt 2MB}).GetType().FullName
''
 (Get-ChildItem -Path "C:\Мои проекты\0282").where({$_.Length -gt 2MB})
((Get-ChildItem -Path "C:\Мои проекты\0282").where({$_.Length -gt 2MB})).GetType().FullName
Цитата:
Код: Выделить весь код
    Directory: C:\Мои проекты\0282


Mode                LastWriteTime         Length Name                                                                                                       
----                -------------         ------ ----                                                                                                       
-a----       13.03.2019     12:44        9722769 Sample 02.docx                                                                                             
-a----       13.03.2019     12:44        9722769 Sample.docx                                                                                                
System.Object[]

-a----       13.03.2019     12:44        9722769 Sample 02.docx                                                                                             
-a----       13.03.2019     12:44        9722769 Sample.docx                                                                                                
System.Collections.ObjectModel.Collection`1[[System.Management.Automation.PSObject, System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKey
Token=31bf3856ad364e35]]


DJ Mogarych, да, спасибо, уже читаю. Плюс одна из первых ссылок выдачи (в открытом доступе): PowerShell V4: Where() and ForEach() Methods | Manning.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:50, 25-10-2019 | #14


Ветеран


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

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


Ну, и ещё до кучи: Introduction to the Where Method in PowerShell -- Microsoft Certified Professional Magazine Online.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:38, 26-10-2019 | #15



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Нужно объединить два батника в один BKPB Скриптовые языки администрирования Windows 3 12-07-2019 13:08
Прочее - [решено] Необходимо соединить два компьютера Pemaktitkis Сетевое оборудование 4 21-09-2010 07:58
CMD/BAT - [решено] Необходимо помощъ в написании батника для удаления столбцов из текстового файла. francke Скриптовые языки администрирования Windows 7 02-04-2010 15:32
GPO: ошибки выполнения батника при загрузке системы (запуск сценариев) Hooty Microsoft Windows NT/2000/2003 15 24-02-2009 13:31
подскажите ,  какие составляющие необходимо приобрести для с Sola Программирование и базы данных 3 24-07-2003 18:22




 
Переход