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

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

Автор: AnGo
Дата сообщения: 25.03.2011 17:20
wolf0425

Цитата:
в этом куске кода - никакого изменения содержимого строк не происходит, и происходить не должно


НичЁ не понимаю, поскольку этот скрипт исправно работал пару лет. Обнаружил траблу сегодня, когда первый раз запустил после переустановки.
Буду искать, что случилось и каким образом исправно все работало. Он стоял в планировщике и исправно присылал мне архивированные файлы на почту.

res2001

Цитата:
Замена должна происходить скорее всего там

Да используется он просто:

"C:\Program Files\WinRAR\winrar.exe" a -ep %NameRegFile% @lst.lst

т.е. в нем содержится список файлов для архивации, с уже разименнованной ссылкой на реальный путь.
Автор: Lamman
Дата сообщения: 26.03.2011 11:39
Пара животрепещущих вопросов.
1) Возможно ли средствами командной строки запустить поис файла/-ов или каталога/-ов.
2) Возможно ли средствами командной строки осуществить разбор и замену строк (или ещё лучше - символов) в текстовом файле.

И, соответственно, если возможно, то как?..
Автор: neponytki
Дата сообщения: 26.03.2011 14:16
мы не ищем легких путей. чтобы узнать запущен ли процесс записываем список процессов в тхт ищем строку с именем процесса потом делаем выводы убить его чтоб небыло повторного запуска или снова запустить.

есть варианты попроще?
Автор: 01MDM
Дата сообщения: 26.03.2011 14:23
neponytki
Если надо убить запущенный процесс, и известно его имя, то проще всего выстрелить не метясь:

Код:
2>nul taskkill /im calc.exe || start calc
Автор: neponytki
Дата сообщения: 26.03.2011 14:27
имя известно только если он не запущен вылет с ошибкой


Добавлено:
и еще байда запускаю прогу через планировщик нормально из ком строки хрень с ошибками прога "билайн интернет дома БИД09" может в starte параметры какие указать надо?
Автор: res2001
Дата сообщения: 26.03.2011 17:40
lorents

Цитата:
Не уже ли нет программы, которая могла бы вычислить время. К тому же там еще дату надо вычислять, только ща обратил на это внимание.

Если еще и дату надо, то проще всего, как я и писал выше, через VBS/JS скрипт вычислить разницу и передать назад в батник.
В прошлой части этой ветки я выкладывал батник, который переводит дату/время в секунды и назад. Можешь воспользоваться.
Lamman
1.Можно через for или воспользоваться рекурсивным dirом и фильтром findstr: dir /s ... | findstr "имя файла/каталога"
2.Давай конкретную задачу.

Добавлено:
neponytki

Цитата:
имя известно только если он не запущен вылет с ошибкой

>nul 2>&1 taskkill /im calc.exe || start calc

Цитата:
и еще байда запускаю прогу через планировщик нормально из ком строки хрень с ошибками прога "билайн интернет дома БИД09" может в starte параметры какие указать надо?

Какие ошибки?
Автор: Oll08
Дата сообщения: 26.03.2011 17:51
Помогите пожалуйста, можно ли создать такой батник - есть каталог в нем примерно 500 подкаталогов с файлами, можно ли сделать так, чтобы когда запускаешь батник потом появлялось диалоговое окно ввести в нем название только подкаталога и можно сразу попасть к нужным файлам.
Автор: res2001
Дата сообщения: 26.03.2011 18:05
Oll08
Может тебе поможет команда cd? Зачем огород городить с диалоговым окном.
cd /d c:\каталог\подкаталог234
Автор: Oll08
Дата сообщения: 26.03.2011 18:16
Спасибо большое, но у меня ничего не получилось, может я не так что делаю.
Автор: res2001
Дата сообщения: 26.03.2011 18:21
Oll08

Цитата:
а 234 это что?

ты же написал, что у тебя 500 подкаталогов, ну вот это 234 подкаталог, для примера.

Цитата:
но у меня ничего не получилось

Наводящий вопрос: где ты хочешь чтоб у тебя открылся нужный подкаталог?
Есть разные варианты, например: в командной строке установить текущий каталог, в каком-либо файловом менеджере, в проводнике.
Автор: Oll08
Дата сообщения: 26.03.2011 18:22
В проводнике.
Автор: res2001
Дата сообщения: 26.03.2011 18:30
Oll08
тогда так:

Код: @echo off
set "rootdir=c:\root\"

set /p cat="Введите имя подкаталога: "
if exist %rootdir%%cat% explorer.exe %rootdir%%cat% & exit
echo.Нет каталога: %rootdir%%cat%!
pause
Автор: Oll08
Дата сообщения: 26.03.2011 18:38
Разобралась, сейчас попробую.

Добавлено:
res2001
О, вы волшебник)) спасибо большое, всё получилось. Только "Введите имя подкатолога" пишет в cmd, это правильно? и только потом переходит в проводник.
Автор: res2001
Дата сообщения: 26.03.2011 18:50
Oll08
Так и задумывалось - батники не умеют работать с графическими окнами.
Если хочется окошек, надо делать на VBS/JS.
А вообще можешь просто в Пуск->выполнить набрать "explorer <путь к нужному каталогу>".
Автор: Oll08
Дата сообщения: 26.03.2011 19:02
res2001 Про Пуск выполнить это понятно, я хотела облегчить жизнь нашим вузовским преподавателям, у нас есть база студентов подкаталог это папка каждого студента с его номером студ. билета, преподаватель когда приходит на занятие хочет иметь доступ к каждой папке студента и смотреть лаб. работы которые они там делают, но наврное действительно через Пуск проще будет.
Автор: sounknow
Дата сообщения: 27.03.2011 03:25
вопрос такой. как читать с файла в переменную
к примеру имеется блокнот test.txt и содержит данные типа 27.03.2010 (единственная строка) необходимо получить переменную d ".bat" 27.03.2010
заранее благодарю за помощь.
Автор: neponytki
Дата сообщения: 27.03.2011 06:46
[q][/q]
@ECHO OFF
start d:\bih09\ejectdisk.exe
START D:\bih09\bih.exe
SET dt=50
PING -n %dt% -w 1000 127.0.0.1 > nul

:start
RASDIAL megafon
IF %ERRORLEVEL%==0 GOTO rabotaet
GOTO e623
e
:RABOTAET
ECHO "rabotaet"
SET dt=50
PING -n %dt% -w 1000 127.0.0.1 > nul
GOTO start

:e623
ECHO "nerabotaet"
TASKKILL /im bih.exe /F
START D:\bih09\bih.exe
SET dt=50
PING -n %dt% -w 1000 127.0.0.1 > nul
rasphone.exe -d "megafon"
GOTO start



если процесс запущен получаю ошибку из проги имодем не активируетя


Добавлено:
задержка нужна чтобб бид родил простоон кривыми руками сделан переделали основу от телсры но криво с ком строки какрас в неё и попадаю чё в старте прописать?
Автор: 01MDM
Дата сообщения: 27.03.2011 08:28
sounknow
Из первой сроки файла:

Код:
@echo off

0<file.txt set /p "b="
echo %b%
Автор: king_stiven
Дата сообщения: 27.03.2011 12:31
neponytki
start "" d:\bih09\ejectdisk.exe
Автор: Lamman
Дата сообщения: 27.03.2011 14:45
res2001
1) За findstr - спасибо, поюзаю. Как-то я её проглядел.
2) Куда уж конкретней?..
Из п.1 снимается вопрос разбора, а далее подразумевалось банальное "найти-и-заменить", выполняемое не мной, а скриптом при заходе в систему, например.
Не столько ради экономии времени, сколько ради профилактики рассеянности.

3) Кажется, уже где-то звучало - создать vpn-подключение из сценария?
Или, скажем, напрямую через реестр?
Автор: res2001
Дата сообщения: 28.03.2011 08:17
Lamman

Цитата:
Куда уж конкретней?..

Ну тогда юзай sed, в шапке есть ссылка.
Правда я в sede не силен, но в гугле полно примеров использования, да и тут неоднократно было.
Автор: wolf0425
Дата сообщения: 28.03.2011 09:48

Цитата:
2) Куда уж конкретней?..
есть куда - непонятно насколько сложный разбор тебе требуется, т.е. есть ли смысл придумывать универсальное решение или можно обойтись частным.
Вместо универсального встроенными средствами - обычно гораздо правильнее использовать sed. Пишешь пример входных строк и описание что там заменять, а что нет - тебе быстро накидают примеров, это делающих в одну строку.

а встроенными средствами делается через разбор входного файла на строки через for /f (о наличии в файле пустых строк - предупреждать, там отдельный геморрой), поиск чего-то там в строке - или через тот же findstr или через set + if, печать в выходной файл или неизмененной строки или заново сформированной. Но при таком подходе будут ограничения по спецсимволам в файле...
Автор: Lamman
Дата сообщения: 28.03.2011 13:27
res2001
wolf0425
Ок, спасибо.
Пойду юзать sed. Выглядит многообещающе.

Действительно, среди прочих утилит я его и не заметил как-то...
Автор: rman86
Дата сообщения: 31.03.2011 07:52
здравствуйте. подскажите, как можно вывести (или передать коман.стр.) атрибут создания файла.
комманда attrib может управлять и выводить флаги (системный, скрытый и т.д), мне же нужен именно параметр "дата создания файла".
Автор: res2001
Дата сообщения: 31.03.2011 09:07
rman86
Вот так можно выдернуть дату создания файла

Код: @echo off
for /f "tokens=1,2,3,4 skip=5" %%a in ('dir /t:c /-c "имя файла" ') do echo %%d - %%a %%b & exit
Автор: rman86
Дата сообщения: 31.03.2011 10:16
спасибо. код работает - красиво выводит все что мне нужно. но я никак не пойму как передать значение даты переменной например day


Код: for /f "tokens=1,2,3,4 skip=5" %%a in ('dir /t:c /-c "имя файла" ') do echo %%d - %%a %%b & set day=%%a
Автор: res2001
Дата сообщения: 31.03.2011 10:46
rman86

Цитата:
о set day=%%a не получается,

Получится, только если ты захочешь обратиться к переменной day в теле цикла тебе надо в начале батника поставить команду
SetLocal EnableDelayedExpansion
а при обращении к переменной использовать не знаки %, а восклицательные знаки.
Автор: king_stiven
Дата сообщения: 31.03.2011 14:10
Как там у 32 разрядной 7 -ки с комстрокой, батники XP ные не лагают?
Автор: rman86
Дата сообщения: 31.03.2011 16:18

Цитата:
Получится, только если ты захочешь обратиться к переменной day в теле цикла тебе надо в начале батника поставить команду
SetLocal EnableDelayedExpansion
а при обращении к переменной использовать не знаки %, а восклицательные знаки.



Спасибо. Получилось вот такое безобразие.

Код:
@echo off
SetLocal EnableDelayedExpansion
for /f "tokens=1,2,3,4 skip=5" %%a in ('dir /t:c /-c "c:\log\123.txt" ') do (set day=%%a & goto lab)

:lab
    if "%day:~0,-1%" == "%date%" (
        echo DONE!
    ) ELSE (
        echo Not done!
    )

PAUSE
exit
Автор: 01MDM
Дата сообщения: 31.03.2011 16:26
king_stiven

Цитата:
Как там у 32 разрядной 7 -ки с комстрокой, батники XP ные не лагают?

Нет, все нормально. Есть небольшие различия. Но сейчас даже не вспомню на чем спотыкался, что-то было связано со вложенными циклами, а точнее конфликтовали встроенные переменные если их назначить одинаковыми буквами. Ну и у различных утилит появились дополнительные фичи, а в некоторых убрали, например в netsh нет контекста diag, наверное потому что все можно сделать через wmic и тем более в powershell.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

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


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