Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 10

Автор: wolf0425
Дата сообщения: 21.04.2011 14:54
Free_Soft
Цитата:
слеш в конце мешает в команде expand.
гораздо проще дописать после слеша точку, чем отрезать слеш, expand это замечательно поймет.
т.е. отрезать - вообще ничего не надо


Автор: Free_Soft
Дата сообщения: 21.04.2011 15:09
wolf0425
ну так до такого простого выхода надо же еще додуматься... пасиб
Автор: Nikoderiko
Дата сообщения: 21.04.2011 23:49
Народ, подскажите. как получить имя рабочей папки?
Не путь, а только имя?
5peciali5t, спасибо!
Автор: 5peciali5t
Дата сообщения: 22.04.2011 02:22
Nikoderiko
for %%A in ("%~dp0.") do set folder=%%~nA
echo %folder%

"%~dp0.." - для возврата директории на 1 уровень ближе к диску
Автор: lorents
Дата сообщения: 23.04.2011 19:02
Добрый день!
Объясните, пожалуйста, почему не работает?

Код: for /f "delims=" %%i in ('dir /b /s /a-d "D:\Прочее\Image Catalyst\Images\*.png"') do echo "%%~fi"
Автор: 01MDM
Дата сообщения: 23.04.2011 19:12
lorents
С кодировкой все в порядке? Если батник сохранен в системной ( cp1251 ), то добавь в начало батника команду `1>nul chcp 1251`
Автор: lorents
Дата сообщения: 23.04.2011 19:17
01MDM
точно, дело в кодировке. Спасибо.
и что значат параметры /b /s /a-d? не могу ни где найти описание
Автор: 01MDM
Дата сообщения: 23.04.2011 19:19
lorents

Цитата:
что значат параметры /b /s /a-d? не могу ни где найти описание


dir /?
Автор: lorents
Дата сообщения: 23.04.2011 19:20
01MDM
да, т.е. меня интересует, что делает строчка dir /b /s /a-d в вышеприведенном примере
Автор: 01MDM
Дата сообщения: 23.04.2011 21:00
lorents
Тоже самое, что и просто команда, выводит список файлов *.png
Просто выполни эту команду без for и увидишь результат.
Автор: lorents
Дата сообщения: 23.04.2011 21:05
ты меня не много не так понял, я хочу знать, что делают команды /b, /s и /a-d. Ищу в интернете, но не могу найти их описание.
Автор: ASE_DAG
Дата сообщения: 23.04.2011 21:27
lorents
> что делают команды
Ключи.

> Ищу в интернете
Не надо в Интернете. Выполните:
>dir /?
Автор: lorents
Дата сообщения: 23.04.2011 21:57
ASE_DAG спасибо.
теперь понял о чем говорил 01MDM.

Появился такой вопрос, а как узнать стоит ли в атрибутах файла "только чтение" или нет?
Допустим у меня есть файл "D:\logo.png", как узнать указан ли в нем атрибут "только чтение" или нет.
Автор: 01MDM
Дата сообщения: 23.04.2011 23:14
lorents

Цитата:
Допустим у меня есть файл "D:\logo.png", как узнать указан ли в нем атрибут "только чтение" или нет.


Код:
attrib "D:\logo.png" | 1>nul findstr /b ".....R" && echo ReadOnly
Автор: lorents
Дата сообщения: 23.04.2011 23:41
01MDM
Большое спасибо, то что надо.
Автор: AlexanderNON
Дата сообщения: 24.04.2011 08:45
Здрасте.
Полгода назад где-то здесь случайно нашел батник, который удалял все файлы из папки, кроме созданных в пятницу. Сейчас не могу найти этот код.

Итак, исходные данные:
Есть папка C:\Archives\Server\, в которой есть много файлов xxxxxxxx.rar

Задача:
Нужно удалить все файлы, кроме тех, которые были созданы в пятницу. Далее оставить только 3 архива (самых новых по дате создания).

Условия:
Нужна возможность смены дня недели и количества архивов которые нужно оставить.

Помогите, а то я задолбался вручную чистить папки архивов.
Автор: superman md
Дата сообщения: 24.04.2011 11:20
Помогите с батником, нужно следующее:

Открыть путь D:\DATA\
Взять файл data из папки DATA и сделать его копию с именем дата
Взять файл data из папки DATA и сделать его скрытым
Добавить в файл data следующее - wr8dt-k5j7m-ggx6g-e62s5-66wdq-2te54
Автор: res2001
Дата сообщения: 24.04.2011 12:28
superman md

Код: @echo off
copy /b/y d:\data\data %date%
attrib +h d:\data\data
>>d:\data\data echo.wr8dt-k5j7m-ggx6g-e62s5-66wdq-2te54
Автор: AlexanderNON
Дата сообщения: 24.04.2011 13:28
res2001


Цитата:
Тебя интересуют именно "файлы созданные в пятницу"?
Может есть постановка более общая, например - файлы созданные прошлым днем, а если нет, то в какую пятницу?


Да, меня интересуют именно "файлы созданные в пятницу"
Т.е. сначала нужно оставить файлы, которые были созданы в пятницу каждой недели (например в марте пятница была 4 раза, значит архивов должно остаться 4 шт.)
А потом нужно оставить только 3 последних архива (т.е. архивы за последние 3 пятницы).
Автор: superman md
Дата сообщения: 24.04.2011 13:34
del
Автор: res2001
Дата сообщения: 24.04.2011 16:17
AlexanderNON
Вычислять пятницы средствами cmd очень утомительно.
Я бы предложил как вариант запускать батник по пятницам из шедулера, который бы копировал архивы за сегодня в другой каталог, а потом в том каталоге удалял бы все файлы кроме трех последних, и чистил бы за одно текущий каталог, в котором лежат архивы за последнюю неделю (или у тебя архивы делаются только по пятницам?).
Автор: lorents
Дата сообщения: 24.04.2011 17:43
Добрый день!
Помогите решить проблему

Код: for /f "tokens=*" %%i in ('"iniTool /f:".\Tools\config.ini" /s:"folder" /k:"fs""') do set sf=%%i
if %sf%==true set fs=/s

for /f "delims=" %%i in ('dir /b %fs% /a-d "Images\*.png"') do (
    pngout "%%~fi"
    echo "%%~fi"
)
Автор: 01MDM
Дата сообщения: 24.04.2011 18:06
lorents
Сложно судить, а зачем делать переменный ключ в dir-е? Или тогда так:

Код:
pushd "Images"
for /f "delims=" %%i in ('dir /b %fs% *.png') do (
pngout "%%~fi"
echo "%%~fi"
)
popd
Автор: lorents
Дата сообщения: 24.04.2011 18:27
01MDM

Цитата:
а зачем делать переменный ключ в dir-е?

это для моего проекта. Спасибо большое, работает!
Автор: king_stiven
Дата сообщения: 24.04.2011 19:08
Прикольный проект ). Хотя может я просто не понимаю.
Автор: lorents
Дата сообщения: 24.04.2011 19:18
Подскажите, а как сделать, чтобы не зависимо pushd, создавался файл рядом с batch?
Автор: 01MDM
Дата сообщения: 24.04.2011 19:47
lorents

Цитата:
чтобы не зависимо pushd, создавался файл рядом с batch?

А чем он создается? Если c помощью pngout, то попробуй:

Код:
.....
pngout "%%~fi" "%~dp0%%i"
echo "%~dp0%%i"
)
popd
Автор: lorents
Дата сообщения: 24.04.2011 20:24
01MDM
спасибо за идею, все работает.
Автор: AlexanderNON
Дата сообщения: 24.04.2011 23:24
res2001

Цитата:
Вычислять пятницы средствами cmd очень утомительно.
Я бы предложил как вариант запускать батник по пятницам из шедулера, который бы копировал архивы за сегодня в другой каталог, а потом в том каталоге удалял бы все файлы кроме трех последних, и чистил бы за одно текущий каталог, в котором лежат архивы за последнюю неделю (или у тебя архивы делаются только по пятницам?).


Хорошо, можно и так сделать, хотя такой батник мне бы очень помог.

Тогда вопрос, как сделать батник, который бы удалял все архивы из папки кроме последнего созданного. Потом копировал бы его в сетевую папку и при удачном копировании удалял архив?
Автор: BVV63
Дата сообщения: 25.04.2011 04:53
res2001
AlexanderNON

Цитата:
Вычислять пятницы средствами cmd очень утомительно.

Ну, в общем-то, нет:

Код: WMIC Path Win32_LocalTime Get DayOfWeek

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: зависает установка Windows XP: 39 минут


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.