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

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

Автор: PulsSe
Дата сообщения: 03.09.2010 17:00

Цитата:
тут может получиться, что пришел на машину с семеркой и обломился из-за недостатка админских прав.


ну такие ситуации бывают не часто я полагаю.. ну и там можно уж поискать другие варианты)


Цитата:
Хотя ситуацию с программами, которые хранят полные пути в своих инишниках, которые не будешь же править при любом втыкании - вполне понимаю.
но обычно портативные верси сделать можно...


совершенно верно, портабл софт рулит) но все же есть проги, например 1С, у которой информационные базы привязаны по фиксированному пути( тут либо постоянно путь менять.. либо букву, либо отдельный батник еще писать... но если б только 1С была.. есть еще и др ннекоторый софт с такими же заморочками)

благодарю еще раз)) очень помог)
Автор: wolf0425
Дата сообщения: 03.09.2010 17:02

Цитата:
совершенно верно, портабл софт рулит) но все же есть проги, например 1С, у которой информационные базы привязаны по фиксированному пути
неа, не привязаны, там можно базу параметром при запуске указать, а не только в регистри прописывать.
Кстати, и в регистри всё равно с какой буквой базу то прописывать - все равно запускающий батник пишет, ну будет чуть длиннеее.
Автор: PulsSe
Дата сообщения: 03.09.2010 17:07

Цитата:
неа, не привязаны, там можно базу параметром при запуске указать, а не только в регистри прописывать.
Кстати, и в регистри всё равно с какой буквой базу то прописывать - все равно запускающий батник пишет, ну будет чуть длиннеее.


да я в слышал про такое, но реализовать как то не взялся.. даже не знаю почему) решил наверно из корня проблему поднять)

но все же в таком случае проблема с других софтом не решается.. поэтому и взялся решения с буквой диска искать
Автор: JekaRus
Дата сообщения: 03.09.2010 17:18
Никто не встречал скрипт запроса размера свободного места на дисках. Нужно чтоб проводился опрос компов по списку и в случае если места менее 1ГБ выполнялось действие. Например отправка письма на почту.
Автор: bomzzz
Дата сообщения: 03.09.2010 17:41
JekaRus
или из dir-а вырежи или отседава
fsutil volume diskfree C:

Добавлено:
for /f "tokens=6" %%I in ('fsutil volume diskfree C:') do echo %%I

Добавлено:
Неверное число. Числа ограничены 32 битами точности. - тут другой подводный камень будет

Добавлено:
в 32 бита влазит только 4 гига, но если откинуть три последние цифры перевести в тысячи байт, то хватит для домашних целей

ECHO OFF
COLOR 9F
CLS
for /f "tokens=6" %%I in ('fsutil volume diskfree C:') do set STRING=%%I
echo %STRING%
set /a STRING=%STRING:~0,-4%
echo %STRING%
pause

Добавлено:
ECHO OFF
COLOR 9F
CLS

for /f "tokens=6" %%I in ('fsutil volume diskfree C:') do set STRING=%%I
echo %STRING%
set /a STRING=%STRING:~0,-4%
echo %STRING%
if %STRING% LSS 1024000 echo OK

pause
Автор: 01MDM
Дата сообщения: 03.09.2010 18:13
JekaRus
Такой вариант

Код:
@echo off
setlocal

for %%i in (q w e r t y u i o p a s d f g h j k l z x c v b n m) do (
    if exist %%i:\ call:getfreespace "%%i:"
)
goto:eof

:getfreespace
for /f "usebackq tokens=1,2 delims==" %%i in (`wmic volume where "DriveLetter='%~1'" get freespace /value`) do (
    if not "%%j"=="" set "%%i=%%j"
)
if %FreeSpace% leq 1073741824 echo %1
Автор: bomzzz
Дата сообщения: 03.09.2010 18:15
01MDM
Неверное число. Числа ограничены 32 битами точности - а как ты это обошел???
Автор: 01MDM
Дата сообщения: 03.09.2010 18:41
bomzzz
Но ведь 1073741824 (1Гб) не входит в это ограничение.
Автор: wolf0425
Дата сообщения: 03.09.2010 18:48

Цитата:
Но ведь 1073741824 (1Гб) не входит в это ограничение.
зато %FreeSpace% может входить
Автор: bomzzz
Дата сообщения: 03.09.2010 18:51
с числами чета никога ниче не делал кроме счетчика, а вообщенадо конвертировать строку в число?

Добавлено:
ещё фсутил, дает три значения как и апи функция, последнее значение очевидно и есть
freespaceavaliabletocaller
свободное место не вообще а доступное вызывающему процессу, не знаю в каких случаях это может сказаться
Автор: 01MDM
Дата сообщения: 03.09.2010 19:06
wolf0425

Цитата:
зато %FreeSpace% может входить

Может конечно, но оно не будет ни равно ни меньше 1073741824 Т.е. проверка условия даст верный результат
Автор: bomzzz
Дата сообщения: 03.09.2010 19:10
почему, если возникнет ошибка то она будет равна нулю

Добавлено:
вернее она будет равна строковому значению
Автор: 01MDM
Дата сообщения: 03.09.2010 19:16
bomzzz

Цитата:
почему, если возникнет ошибка то она будет равна нулю

Добавлено:
вернее она будет равна строковому значению

Извини, не понял мысль.
Автор: bomzzz
Дата сообщения: 03.09.2010 19:19
ну я то делал что у меня строка конфертирующая
set /a string=%string%
сначала потомуша не знал надо ли отдельно конфертировать перед ифом,
а потом когда апшипку увидел - заоодно обрезал три знака в конце
а у тебя даже не знаю как будет но она будет равна строковому значению размера

Добавлено:
set /a STRING=%STRING%
echo %STRING%
if %STRING% LSS 9024000 echo OK

значение из за ошибки переменной не меняется, иф не выполняется

Добавлено:
ошибка при срвнении не выдается, но и условие не выполняется, как она сравнивает - хз
Автор: 01MDM
Дата сообщения: 03.09.2010 20:02
bomzzz
Если числа сравнивать как строки, то наверное лучше эти "строки" привести к общему знаменателю:

Код:
@echo off
setlocal

set var1=1234567891234567891
set var2=1234567891234567890

set "var1=0000000000%var1%"
set "var2=0000000000%var2%"

if %var1:~-20% gtr %var2:~-20% (echo GTR) else (echo LSS)
Автор: wolf0425
Дата сообщения: 03.09.2010 20:06

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


Цитата:
Может конечно, но оно не будет ни равно ни меньше 1073741824
оно может быть например в 10 раз больше, в if получим ошибку.

в общем со свободным размером нужно что-то делать, обреза сколько-то знаков справа - вполне вариант, надо только вариант околонулевого свободного места предусмотреть.


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


Автор: bomzzz
Дата сообщения: 03.09.2010 20:07
01MDM
ну ты выдумал, спс за очередной урок.
Автор: wolf0425
Дата сообщения: 03.09.2010 20:08
01MDM

Цитата:
Если числа сравнивать как строки, то
то нужно после добавления нулей слева ещё и обрезать строку отсчитывая справа, чтоб 2 было меньше 10

и главное - ты кавычки в if забыл для строкового сравнения.
Автор: bomzzz
Дата сообщения: 03.09.2010 20:09
01MDM
какой ты хитрый надо запомнить

Добавлено:
на асме интересно можно этой идеей пользоваться, операции с сопроцессором считаются медленными

Добавлено:
нулей только наверно должно быть тоже 20, или 19. вообще у кампутира маскимально возможный размер

7FFFFFFFFFFFFFFF

9223372036854775807
9 223 372 036 854 775 807
Автор: 01MDM
Дата сообщения: 03.09.2010 20:18
wolf0425

Цитата:
оно может быть например в 10 раз больше, в if получим ошибку.

Да хоть в сто, главное чтоб сравнитель укладывался в рамки 32-понимания:

Код:
if 107374182400 leq 1073741824 (echo LEQ) else (echo GTR)
Автор: bomzzz
Дата сообщения: 03.09.2010 20:36
все работает я проверил сразу, не сразу понил как

Добавлено:
и в апи фукции очень мутно этот момент освещен со старшим словом может это и неправда насчет 7FFFFFFFFFFFFFFF , но точно не меньше

Добавлено:
даже если за следующие 20 лет будет такой же рывок: от мб до терабайта, все равно не сможем через 20 лет проверить
Автор: king_stiven
Дата сообщения: 03.09.2010 21:17
JekaRus

Цитата:
и в случае если места менее 1ГБ выполнялось действие.

как раз под утиль FREEDISK
This tool checks whether the specified amount of free space is
available on the specified drive or not. Returns "0" if space is
available and "1" if not available.
Автор: Mark_Titov
Дата сообщения: 04.09.2010 06:21
Подскажите плиз, есть батник для удаления txt файлов в папках -

Код: @ECHO OFF
С:\LOG 2>nul
del *.txt /s /f 2>nul
ECHO.Удаление успешно завершено...
pause 1>nul
Автор: Free_Soft
Дата сообщения: 04.09.2010 07:52
подскажите, как удалить из папки все файлы с расширением .cmd, в именах которых присутствуют цифры?
Автор: 01MDM
Дата сообщения: 04.09.2010 08:19
Mark_Titov

Код:
del 00*.txt
Автор: bomzzz
Дата сообщения: 04.09.2010 08:27
Free_Soft
http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=3860#20
Автор: Free_Soft
Дата сообщения: 04.09.2010 08:33

Добавлено:
bomzzz
Пасиб
Автор: 01MDM
Дата сообщения: 04.09.2010 09:04
Free_Soft

Цитата:
The system cannot find the path specified

А ты указал реальный путь к папке с файлами или оставил "Folder"?

Автор: Free_Soft
Дата сообщения: 04.09.2010 09:16
01MDM

Код: pushd "%temp%" && (
for /f "tokens=*" %%i in ('dir /b *.cmd ^| findstr [0-9]') do del /f /a s h "%%i"
)
popd
Автор: bomzzz
Дата сообщения: 04.09.2010 09:35
чета вкупица не могу зачем тута
pushd
&&
^|
не праснулся что ли еще

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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