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

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

Автор: cluster
Дата сообщения: 07.07.2006 15:10
KapralBel

Цитата:
Т.е надо вывести сообщение если имеется любой файл с заданным именем, но любым расширением?

Наоборот. Знаем расширение, а надо вывести имя. Файл с таким расширением в каталоге будет один. Вроде написал

Код: for /f %%i in ('dir *.err /B %%q') do set name=%%i
echo Имя: %name%
Автор: KapralBel
Дата сообщения: 07.07.2006 15:15
cluster
Тогда ясно
Можно написать чуть легче

Код: For %%a In (*.err) Do Echo %%a
Автор: cluster
Дата сообщения: 07.07.2006 16:32
KapralBel

Цитата:
For %%a In (*.err) Do Echo %%a

Просто мне надо было использовать это имя файла в последующем. Поэтому понадобилось присвоение.

Цитата:
Do Echo %%~na

Именно. Пасиба
Автор: PA3BED4UK
Дата сообщения: 07.07.2006 16:57
Помогите решить 2 следующие задачи:
Нужно объеденить 2 консольные команды в 1 ярлык:
1)
Код: "E:\Games\Hitman Blood Money\asr.exe" -r "E:\Games\Hitman Blood Money\HitmanBloodMoney.exe" и "E:\Program Files\DAEMON Tools\daemon.exe" -securom on -mount 0,"E:\Games\Hitman Blood Money\Hitman blood money\x200x-hbm.mds"
Автор: 01MDM
Дата сообщения: 08.07.2006 06:54
KapralBel

Для любой команды, date /t - пример.
Искал, но не нашел ничего по данному вопросу. Как это сделать если вывод команды направить во временный файл, а из него уже взять значение для переменной?
Автор: Refugee
Дата сообщения: 08.07.2006 12:35
01MDM
for /f "tokens=*" %%i in ('date /t') do set SDATE=%%i
Автор: 01MDM
Дата сообщения: 08.07.2006 16:26
Refugee

Спасибо.
Автор: eubulos
Дата сообщения: 09.07.2006 17:30
Возникла довольно странная задача, решения которой не получается найти. Итак, дано: Windows, директория "А" с большим количеством однородный файликов. Задача: раскидать файлики по директориям внутри директории "А" в количестве, скажем 200 штук на директорию. Т.е., например, из директории с файлами в количестве 10000 тысяч должно быть 50 директории с 200 файлами в каждой. Может это как-то можно сделать с помощью bat-файлов? Есть идеи?
Автор: bredonosec
Дата сообщения: 09.07.2006 17:42

Цитата:
Может это как-то можно сделать с помощью bat-файлов?
- (чисто теоретически) цикл счетчика в программу воткнуть? Типа, копируем первый файл, добавляем к пеерменной еденицу, если переменная больше 200, создаем новую директорию, если нет - копируем следующий..
Автор: eubulos
Дата сообщения: 09.07.2006 18:59
С практикой только пока не очень понятно
Автор: evle
Дата сообщения: 12.07.2006 18:17
Есть bat-файл:

Код:
chcp 1251
set conf_file=conf.conf
for /F "tokens=1,2 delims=;" %%i in (%conf_file%) do (
if %%i==folder (
    if not exist "%%j" md "%%j"
    cd "%%j"
    )
if %%i==/folder cd ..
if %%i==file copy "%%j" "%%~nxj"
)
Автор: Refugee
Дата сообщения: 12.07.2006 23:04
evle
Можно так
echo set MY=%%j > temp.cmd
сall temp.cmd
md !MY!
или так
for /F "tokens=*" %%o in ('cscript.exe ees.vbs //nologo "%%j"') do set MY=%%o
md !MY!
где ees.vbs
WScript.Echo CreateObject("WScript.Shell").ExpandEnvironmentStrings(Wscript.Arguments(0))

очень грустно, что cmd нужны подобные костыли
Автор: SergejFk
Дата сообщения: 13.07.2006 12:38
Хочу предложить задачу на скрипт или ссылку готовой проги. Задача в следующем.:-\
На диск, каталоги, подкаталоги, все файлы надо сделать контроль на пермишшен. Т.е. что бы система по расписанию делала лог на изменение безопасности доступа ( запись в лог с контролем времени, кем были сделаны - это желательно )
Лог подробный по директориям, поддиректориям, файлам - это главное.
В сети подняты PDC, BDC, AD, FileServer W2000Server Sp4. Контроль надо делать на FileServer. Права админа ес-но имеются.
Автор: KapralBel
Дата сообщения: 13.07.2006 12:59
SergejFk
По моему такое проще сделать аудитом (встроенным в систему)
Автор: LeshiyAlex
Дата сообщения: 13.07.2006 14:18
И опять про ДАТУ
Перечитал все 51 предыдущие страницы, но так и не нашел конкретного решения
ДАТА-1 решено, без вопросов, а вот дата -7 дней как? кое-какие варианты были, но при дате 01.01.2006 они сразу отпадают, день получается с минусом
На всякий случай ниже приведу пример ДАТА -1 на который я ориентируюсь:

@Set dt=%Date%
@set dtDay=%dt:~-10%
@set dtDay=%dtDay:~0,2%
@set dtMonth=%dt:~-7%
@set dtMonth=%dtMonth:~0,2%
@set dtYear=%dt:~-4%

@If "%dtDay:~0,1%" == "0" Set dtDay=%dtDay:~1,1%
@If "%dtMonth:~0,1%" == "0" Set dtMonth=%dtMonth:~1,1%

@Set /A dtDay=%dtDay%-1

@If %dtDay%==0 (Set /A dtMonth=%dtMonth%-1)
@If %dtMonth%==0 (Set /A dtYear=%dtYear%-1) & (Set dtMonth=12)
@If %dtDay%==0 (
If %dtMonth%==01 (Set dtDay=31)
If %dtMonth%==03 (Set dtDay=31)
If %dtMonth%==05 (Set dtDay=31)
If %dtMonth%==07 (Set dtDay=31)
If %dtMonth%==08 (Set dtDay=31)
If %dtMonth%==10 (Set dtDay=31)
If %dtMonth%==12 (Set dtDay=31)
If %dtMonth%==02 (Set dtDay=28)
If %dtMonth%==04 (Set dtDay=30)
If %dtMonth%==06 (Set dtDay=30)
If %dtMonth%==09 (Set dtDay=30)
If %dtMonth%==11 (Set dtDay=30)
)

Set dtDay=0%dtDay%
Set dtDay=%dtDay:~-2%
Set dtMonth=10%dtMonth%
Set dtMonth=%dtMonth:~-2%
Set dtYear=10%dtYear%
Set dtYear=%dtYear:~-4%
@REM Set dt

@ECHO Сегодняшняя дата: %dt%
@ECHO Вчерашняя дата: %dtDay%.%dtMonth%.%dtYear%
Автор: KapralBel
Дата сообщения: 13.07.2006 15:20
LeshiyAlex
Проверяй если день отрицательный - то прибавляй количество дней в предыдущем месяце и отпимай от месяца 1
Автор: Daeron
Дата сообщения: 13.07.2006 20:47
Вопрос по идее не сложный, но что-то сообразить не могу:
Есть каталог с подкаталогами, в которых находятся файлы *.sql
нужно переименовать эти файлы в имя_каталога_имя_файла.sql
скопировать полученный файл в другой каталог, и все имена файлов содержащих строку INSTALL поместить в отдельный файл.
Автор: saym101
Дата сообщения: 14.07.2006 10:06
А возможно что б еще и лог файл писал?
Скажем запускается на выполнение архивирования. А файл во время работы архива был занят, естественно что в окне выполнения будет отображено. А вот записать лог и посмотреть потом, было бы куда интересней.

Код: md C:\$_ARC\Day_%1

del C:\$_ARC\Day_%1\*.rar

rar u -r -pruboard C:\$_ARC\Day_%1\_1C_Data C:\1C\lilyabase -x*.cdx -x*.exe -x*.zip -xNEW_STRU\*.* -x*.rar

rar u -r -pruboard C:\$_ARC\Day_%1\_UniScan C:\UniScan


Exit
Автор: zh3ntos
Дата сообщения: 14.07.2006 10:12
Здравствуйте!
А реально ли в цикле FOR, не выходя из него, сделать счетчик?
В таком виде счетчик не работает, даже %random% выдаёт одно и то же число. А нужно для каждого файла exe в папке делать своё число.

А ещё лучше, в этом же цикле. Если найденный файл *.exe существует в другой папке (например c:\1), то закинуть его туда, переименов его в *_1.exe и тд. Осуществить как впринципе знаю, но вот только счетчик не работает... :/
Например:


Код:
set /A count=0
FOR /F "tokens=3,4* delims=\" %%i IN ('DIR /B *.exe') DO (
set /A count=%count%+1
echo %count%
echo %random%
)
Автор: uZver
Дата сообщения: 14.07.2006 10:28
saym101
rar u -r -pruboard C:\$_ARC\Day_%1\_1C_Data >arc.log


Добавлено:
zh3ntos
было уже .... (я сам и наступал на эти грабли)

echo off
setlocal ENABLEDELAYEDEXPANSION
FOR /F "tokens=3,4* delims=\" %%i IN ('DIR /B *.exe') DO (
set /A count=!count!+1
echo !count!
echo !random!

вообщем использовать ENABLEDELAYEDEXPANSION и "!" вместо "%"
Автор: zh3ntos
Дата сообщения: 14.07.2006 11:07
uZver
Спасибо, разобрался!
Автор: drewha
Дата сообщения: 14.07.2006 16:38
Есть ли возможность в .bat файлах обрабатывать строки?
Мне нужно проанализировать параметры командной строки, которые выглядят в виде
"-key=value" и присвоить значения value соответствующим переменным
Автор: zh3ntos
Дата сообщения: 14.07.2006 20:57
drewha
Если ты запустишь свой батник с параметрами -key=value, то %1 у тебя будет -key, а %2 - как раз value.
Автор: drewha
Дата сообщения: 17.07.2006 11:05
zh3ntos
У меня не один параметр, а несколько (от 0 до 7). Причем один из них выглядит не как
'-key=value' а просто 'value', причем порядок их произвольный.

Кстати, а почему знак '=' воспринимается как разделитель? Можно ли это как-то изменить?
Автор: king_stiven
Дата сообщения: 17.07.2006 14:15
Пососветуйте, как решить такую задачу:
Перетащенные на плейлист файлы и папки с mp3,
Разбить каждый из файлов на заданное число байт,
засунуть порезанные куски каждого из файлов в отдельную папку с автоматически образованными именами папок типа : 001, 002, 003...
чтобы порядок воспроизведения не нарушался
У меня получилось только одна папка, и там все файлы, причём конец и начало разных произведений встречаются в одном файле.

Файл cmd

del /q C:\1\01\*.*
find ".mp3" < C:\1\02\2.m3u > C:\1\02\1.txt
find ".MP3" < C:\1\02\2.m3u > C:\1\02\1.txt
find ".Mp3" < C:\1\02\2.m3u > C:\1\02\1.txt
"C:\Program Files\WinRAR\WinRAR.exe" a -m0 -inul -v6000k C:\1\01\ @C:\1\02\1.txt
cd C:\1\01\
for %%f in (*.*) do ren %%f %%f.mp3
exit
2.m3u-плейлист
1 строчка чистит каталог от старых записей
2-4 выбирает только mp3 в 1.txt
5 режет все файлы подряд в виде многотомного архива
7 переименование в mp3

только не смейтесь, знаком с командной строкой недавно
Автор: Ruslan FM
Дата сообщения: 17.07.2006 15:23
Нужно найти XLS один файл с каталоге который был отредактирован последним
сделал
dir /b /a-d/o-d/tw %dirProg%*.xls -это сортировка в обратном порядке по дате
а как прочитать результат ??
попробовал
set dirf=dir /b /a-d/o-d/tw %dirProg%*.xls
FOR /F "tokens=1" %%i in (%dirf%) do @echo %%i
выдает
"Не удается найти файл `dir."
куда копать есть идеи ??
Автор: zh3ntos
Дата сообщения: 17.07.2006 15:59
drewha
По поводу "=" нужно обращаться к местным гуру.

А поконкретнее, приведи пример запуска с параметрами.


Ruslan FM
А так пробовал?
FOR /F "tokens=1" %%i in ('dir /b /a-d /o-d /tw %dirProg%\*.xls') do @echo %%i
Автор: drewha
Дата сообщения: 17.07.2006 16:07
zh3ntos

Цитата:
А поконкретнее, приведи пример запуска с параметрами

run.bat data1.xml -server=localhost1 -iterations=10
run.bat -iterations=1 data2.xml -server=localhost2
run.bat data3.xml
run.bat -server=localhost3
...
Автор: Kirillhome
Дата сообщения: 17.07.2006 18:20
А вот еще "задачка".

"В общем" - вывести список подкаталогов и файлов (для файлов - еще и дату создания, размер) для данного каталога. Но - (и вот здесь начинаются "частности") - разделителем в строке выходного файла должен быть символ табуляции.
Структура выходного файла такова
/файл01{Табуляция}размер01{Табуляция}Дата_Время01
/файл02{Табуляция}размер02{Табуляция}Дата_Время02
/Подкаталог01
/Подкаталог01/файл03{Табуляция}размер03{Табуляция}Дата_Время03

Ну, и т.д.

Всё, в общем понятно, кроме того как табуляцию вставить?

Сам спросил - сам ответил
Разделить в Echo выводимые части не пробелом, а табуляцией!
Автор: SergejFk
Дата сообщения: 17.07.2006 20:12
KapralBel

Цитата:
По моему такое проще сделать аудитом (встроенным в систему)

Аудитом могу посмотреть, кстати открывая каждое событие вместе с кучей ненужной инфы, лишь факт доступа по установленному разрешению, какое-либо изменение юзером ну и т.д. Мне надо список юзеров из оснастки пользователи и компоты, имеющие разрешения на несколько сотен файлов в различных директориях, причем именно разрешения, а не одно право на доступ. Разрешения безопасности также различные. Каюсь, не точно задал вопрос, чем и смутил. Скрипт должен отрабатывать не сам факт изменения, а сами эти установленые возможности.
Например, мы знаем от наших благодетелей Руссиновича и Когсвелла утилу AccessEnum works on Windows NT/2000/XP/2003 . Но это улучшенный вариант Cacls.exe из ResKit на контроль или лог доступа, но никак не пермишена, чего как-раз мне и надо.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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