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

Ответить
 • Просмотры: 1
Аватара пользователя
CyberNoble

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

Сообщение CyberNoble »

Нужно создать батник,который копирует все файлы в расширении .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. Сделал первое,оказывается я тупой,нужно было писат ьв консоль не просто параметр имя файла,а имя с расширением
Аватара пользователя
Iska

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

Сообщение Iska »

Цитата CyberNoble:



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






Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=%~1
if defined sSourceFolder (
	if exist "%sSourceFolder%" (
		set /a iMaxSize = 2 * 2^<^<20
		for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:-d "%sSourceFolder%\*.*"`) do (
			if %%~zi gtr !iMaxSize! echo del /f /q "%%~i"
		)
	) else (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 1
)
endlocal
exit /b 0

Для реального удаления уберите выделенное.
Аватара пользователя
Vadikan

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

Сообщение Vadikan »

2019 год, а все еще батникам в виндах учат :) Лучше б пошику учили.

"Батник"



Код:

Код: Выделить всё

powershell -noprofile -command "dir -Path c:\temp -File | where {$_.Length -gt 2097152} | %{del $_.FullName -WhatIf}"
Аватара пользователя
YuS_2

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

Сообщение YuS_2 »

Цитата Vadikan:



Лучше б пошику учили.
CMD/BAT - Необходимо сделать два батника,подскажите ошибки




Видимо, кто может - не хочет, а кто хочет - не знает...

Диалектика революции шелов, блин... ну, почти Изображение
Аватара пользователя
Iska

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

Сообщение Iska »

Цитата Vadikan:



2019 год, а все еще батникам в виндах учат Изображение Лучше б пошику учили.
CMD/BAT - Необходимо сделать два батника,подскажите ошибки




Тут нужно желание вопрошающего учиться. Я вон регулярно советую, да толку-то…
Аватара пользователя
Charg

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

Сообщение Charg »

Цитата Iska:



Тут нужно желание вопрошающего учиться.
CMD/BAT - Необходимо сделать два батника,подскажите ошибки




А тут разве кто-то из вопрошающих спрашивал "научите как сделать?". Ну, за редкими исключениями, конечно...

99% тем это "мне надо вот так, запилите чтоб я скопипастил и оно работало".
Аватара пользователя
alpap

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

Сообщение alpap »

на cmd тоже можно в одну строку:



Код:

Код: Выделить всё

@echo off
for /f "delims=" %%a in ('dir /a-d/b/s "%~1"') do for /f "tokens=3" %%b in ('dir /-c "%%a"^|findstr /rc:"^  .*"^|set /p #^=^^^& cmd /v/c echo:!#!') do if %%b gtr 2097152 >nul 2>&1 del "%%a"
pause
Аватара пользователя
DJ Mogarych

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

Сообщение DJ Mogarych »

Задание первое:



Код:

Код: Выделить всё

$parameter1 = "C:\Users\User\Documents"
$parameter2 = "слово-для-исключения"
dir "C:\temp\*.txt" -Exclude "*$parameter2*" |Copy-Item -Destination "$parameter1"

Задание второе:



Код:

Код: Выделить всё

(dir "C:\temp").where{$_.Length -gt 2MB} |Remove-Item -Confirm:$false

Это всё Powershell.
Аватара пользователя
Iska

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

Сообщение Iska »

DJ Mogarych, вижу, что это:


Цитата DJ Mogarych:





Код:

Код: Выделить всё

(dir "C:\temp").where{$_.Length -gt 2MB}

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




работает, но не пойму, как.



Код:

Код: Выделить всё

Get-ChildItem -Path "C:\temp"

возвращает один объект или массив объектов. Что такое «.where {…}»? Судя по точке, это должен быть метод или свойство, но чего[/i] именно? И фигурные скобки?! Не соображу.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»