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

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

Автор: Almasy
Дата сообщения: 20.11.2008 08:01
А так чтобы батник запускался при загрузке?
Автор: ipmanyak
Дата сообщения: 20.11.2008 08:31
Almasy создай на флэшке файл autorun.inf в нем пропиши запуск твоего батника
http://www.fssr.ru/hz.php?name=News&file=article&sid=7814
http://ru.wikipedia.org/wiki/Autorun
Автор: StHunter84
Дата сообщения: 20.11.2008 10:06
здравствуйте. Подскажите пожалуйста как сделать защиту от дурака, чтобы бат файл работал только при наступлении времени от и до?

я делаю так:

:time
if %time:~0,5% == 03:00 goto copy
sleep 10
goto time
:copy

срабатывает только в 3:00

нужно чтобы срабатывало от 3:00 и до 6:00

догадываюсь что нужно сделать проверку времени циклом типо FOR сравнивая его с текущщим временем, как реализовать?
Автор: potapich1
Дата сообщения: 20.11.2008 10:17
Сделай двойное условие, вложенное друг в друга. В первом, если больше 3х, во врором - меньше 6ти
Автор: DrepsVLZ
Дата сообщения: 21.11.2008 00:35
Здравствуйте. Подскажите как сделать чтобы при запуске 1.bat, запускался 2.bat через 1 минуту. Что-то похожее на таймер, через n-секунд запустить другой bat. Заранее спасибо!
Автор: StHunter84
Дата сообщения: 21.11.2008 09:35
>> potapich1

разве можно в батниках писать if %time:~0,5% => 03:00 ???

как поставить больше или равно или меньше или равно?

наверно надо делать так:

if %time:~0,5% == $a

а $a=%time:~0,5%+1 мин тока как правильно это записать?

>>DrepsVLZ

сделай таймером утилиту sleep из RESKIT

sleep 60
call 2.bat

не катит?
Автор: king_stiven
Дата сообщения: 21.11.2008 11:24
StHunter84
Запусти в комстроке
if /?
Автор: slay1212
Дата сообщения: 21.11.2008 13:38
Привет уважаемые. Есть вопрос . Написал батник который чистит файлы в каталоге( и вложенных в него) (параметр 1) с расширением (пар2) оставляя столько то последних (параметр 3) по времени .
Ну идет проверка не пустые ли параметры если пустые что0то ставится по умолчанию.
if "%~3" == "" (
set kolv=7
) else (
set kolv=0
set kolv=%3

так работает
если писать ...
set kolv="%~3"
то дальше в строке
for /F " skip=!kolv! " %%i in ('"dir %%d /b /S /O:-D^| find /i !rash! "') DO (
дает ошибку а

for /F " skip=%kolv% " %%i in ('"dir %%d /b /S /O:-D^| find /i !rash! "') DO (
работает.
SETLOCAL ENABLEDELAYEDEXPANSION включен ( при выключенном тоже ошибку дает).
Ругается "skip="7" те берется не число и символьное значение. Почему параметр число передается как символ?
PS Батник работает просто теоретический интерес!

И еще. Почему когда пишешь
for /F " skip=%kolv% " %%i in ('"dir %%d /b /S /O:-D^| find /i !rash! "') DO (
без ключа /S %% i имеет вид <каталог запуска батника>.<имя найденного файла из другого каталога>. Ставишь /S -все ОК ?
Автор: StHunter84
Дата сообщения: 21.11.2008 15:37
не увидел операторы сравнения, спасибо, получилось.
Автор: Elroir
Дата сообщения: 21.11.2008 16:36
slay1212

Цитата:
Ругается "skip="7" те берется не число и символьное значение. Почему параметр число передается как символ?

Потому что ты его передаешь for-у, как символ (в кавычках). Параметр skip не принимает ничего, кроме числового значения после знака "=" (кстати - число 0 он тоже не принимает).


Цитата:
Почему когда пишешь for /F ... DO
без ключа /S %% i имеет вид <каталог запуска батника>.<имя найденного файла из другого каталога>. Ставишь /S -все ОК ?

Так как ты не написал, что делается после DO, я предполагаю, что ты используешь модофикатор %%~dpi или %%~fI. Команда dir /b без ключа /s выводит только имена файлов, без полного пути. В этом случае, for пытается вычленить из названия файла путь, у него не получается и, поэтому for использует текущую директорию для подстановки пути.
Во втором случае, когда используется ключ /s - dir выводит имена файлов с полными путями и for берет пути оттуда.
Автор: slay1212
Дата сообщения: 21.11.2008 17:05
Elroir

Цитата:
Команда dir /b без ключа /s выводит только имена файлов, без полного пути.

Вот что значит, надо внимательно читать госты ! А после do пытался удалять лишние файлы. Причем %%~dpi брала путь батника а i - только имена файлов. Я думал /s только подкаталогов касается.
Автор: DrepsVLZ
Дата сообщения: 21.11.2008 21:52
StHunter84


Цитата:
sleep 60
call 2.bat

не катит?


Да, все получилось! Благодарю.
Автор: batniki
Дата сообщения: 21.11.2008 22:49
Подскажите, как сделать условие: поиск символов (FINDSTR /R /I /C) в предопределенное переменной, если указанные символы есть делать goto если нет, то exit
Автор: Elroir
Дата сообщения: 22.11.2008 00:55
batniki
Как же тебя трудно понимать!

Код:
echo %переменная% | findstr /i /r /c:"^abcd">nul && goto label || goto :EOF
Автор: batniki
Дата сообщения: 22.11.2008 12:21
Elroir, извини , спасибо! Нужно было заглушку поставить на set /P

Подскажите, как сделать, что-то типа ассоциативного массива, брать случайное его значение и выставлять ему set.
Проще говоря: есть несколько предопределенных переменных:

Код: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Opera/9.60 (Windows NT 5.1; U; en) Presto/2.1.1
Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
Автор: Elroir
Дата сообщения: 22.11.2008 13:38
batniki
Посмотри здесь - вопрос timsky и мой ответ ему.
Автор: Igor_V_Mitichev
Дата сообщения: 22.11.2008 18:30
У меня не совсем скриптовая задача, но очень похоже (собственно, вопрос и вырос из проблемы, возникшей со скриптом). Может быть кто поймет, почему dir не видит файл, хотя он есть:


D:\share\Общая\АСМ-1\ТерешинАА\2>dir "2x2-Roce On.mp3"
Volume in drive D has no label.
Volume Serial Number is 6CE4-C31D

Directory of D:\share\Общая\АСМ-1\ТерешинАА\2

File Not Found

D:\share\Общая\АСМ-1\ТерешинАА\2>dir | find ".mp3"
04.08.2008 14:05 2 584 242 2x2-Roce On.mp3

D:\share\Общая\АСМ-1\ТерешинАА\2>

Или такой вариант (типа в топик):

D:\share\Общая\АСМ-1\ТерешинАА\2>files.cmd
D:\share\Общая\АСМ-1\ТерешинАА\2>dir /b | find ".mp3" 1>files.txt
D:\share\Общая\АСМ-1\ТерешинАА\2>for /F "tokens=*" %i in (files.txt) do dir "%i"

D:\share\Общая\АСМ-1\ТерешинАА\2>dir "2x2-Roce On.mp3"
Volume in drive D has no label.
Volume Serial Number is 6CE4-C31D

Directory of D:\share\Общая\АСМ-1\ТерешинАА\2

File Not Found

D:\share\Общая\АСМ-1\ТерешинАА\2>
D:\share\Общая\АСМ-1\ТерешинАА\2>type files.txt
2x2-Roce On.mp3

D:\share\Общая\АСМ-1\ТерешинАА\2>


Мистика?
Автор: Elroir
Дата сообщения: 22.11.2008 18:46
Igor_V_Mitichev

Цитата:
Мистика?

Вряд-ли
Скорее в названии файла присутствуют русские буквы, которые выглядят, как латинские.
Автор: 01MDM
Дата сообщения: 22.11.2008 19:45
Igor_V_Mitichev
Добавлю на ответ Elroir, еще файл может иметь атрибут "скрытый" (hidden)

Что показывает `dir /b /a *.mp3`?

Автор: batniki
Дата сообщения: 22.11.2008 20:46
Elroir,

Цитата:
Посмотри здесь - вопрос timsky и мой ответ ему.

чет он без goto display не работает
Автор: Elroir
Дата сообщения: 22.11.2008 22:22
batniki

Цитата:
чет он без goto display не работает

А код и не должен работать без "goto display". Разбирайся.
Автор: Freemanther
Дата сообщения: 22.11.2008 22:29
Теперь нужно в файлах из списка заменить IDST1 на IDST.
Если можно то без sbs2.com.
Ну если нельзя, то как есть.
Автор: AZJIO
Дата сообщения: 23.11.2008 05:58
DrepsVLZ
в шапке есть утилитка nircmd, с ней варианты:
start /wait nircmd.exe wait 3000
или
nircmd cmdwait 1000
Автор: Igor_V_Mitichev
Дата сообщения: 23.11.2008 15:04

Цитата:
Вряд-ли
Скорее в названии файла присутствуют русские буквы, которые выглядят, как латинские.


Во втором варианте мы что делаем: получаем через dir имена файлов в каталоге, через find отсеиваем те, которые имеют расширение mp3 и сохраняем их в файле files.txt и в конце концов через for пытаемся скормить команде dir эти самые файлы, которые она только что сама и выдала. Никакой перекодировки тут нет. Однако на фактически свой собственный вывод она ругается словами "File Not Found":

===============
dir /b | find ".mp3" > files.txt
for /F "tokens=*" %%i in (files.txt) do dir "%%i"
===============

To: 01MDM

==============
D:\share\Общая\АСМ-1\ТерешинАА\2>attrib "2x2-Roce On.mp3"
File not found - 2x2-Roce On.mp3

D:\share\Общая\АСМ-1\ТерешинАА\2>dir /b/a *.mp3
2x2-Roce On.mp3

D:\share\Общая\АСМ-1\ТерешинАА\2>dir /b *.mp3
2x2-Roce On.mp3

D:\share\Общая\АСМ-1\ТерешинАА\2>
==============
Автор: igor_andreev
Дата сообщения: 23.11.2008 15:28
Igor_V_Mitichev
А если переименовать его - находит?
Помнится я умудрился как-то сохранить на диск файл с именем типа part1:part2, так тоже ни dir ни ren не видели в имени part2(думали наверно, что это ntfs-поток)
Автор: batniki
Дата сообщения: 23.11.2008 17:21
Elroir, спасибо за код, под вечер туплю просто

Подскажите, как сделать след.:
Есть .txt файл, в нем ссылки по одной на строку, такого вида http://domain.zone/shell1.exe,
как запустить все приложения из списка, после конечного слэша, с параметром start /w для каждого
Автор: 01MDM
Дата сообщения: 23.11.2008 18:21
batniki
Попробуй такой вариант:

Код:
@echo off
setlocal

for /f "tokens=*" %%i in (1.txt) do set "app=%%i" && call:start
goto:eof

:start
set app=%app: =Ъ%
set app=%app:/=,%
for %%i in (%app%) do set app=%%i
start /wait "" "%app:Ъ= %"
Автор: batniki
Дата сообщения: 23.11.2008 18:31
01MDM, спасибо, то, что нужно!
Автор: zzxx1488
Дата сообщения: 23.11.2008 23:14
приветствую,
нужно определить размер файла, если он больше 10 байт то одно, нет другое..
читал форум сделал что то вроде этого

set file=file.txt
call :xxx %file%
:xxx
if %~z1 == 10240 (
goto :xxend
) else (
goto :eof
)

но во-первых он проверяет точный размер, во-вторых длиновато, в одну строку с использованием for можно?
Автор: AZJIO
Дата сообщения: 23.11.2008 23:34
Есть ли у кого утилитка, которая бы показывала что идёт процесс выполнения батника? К примеру батник выполняется скрыто в течении нескольких секунд к примеру 30 сек, обычно пользователь может запустить процесс повторно, так вот в скрытом батнике запустить утилитку с полоской прогресса, а в конце сценария убить этот процесс.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: как сохранить сетевые настройки


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