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

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

Автор: bomzzz
Дата сообщения: 29.08.2010 23:16
Free_Soft

да вот совсем недавно писали
@echo off
cd \
rd /s /q "%~dp0"
Автор: Free_Soft
Дата сообщения: 30.08.2010 00:01
bomzzz
Пасиб. а как можно скрыть строку какого то сообщения во время этого? что там написано не успеваю прочесть
Автор: bomzzz
Дата сообщения: 30.08.2010 00:05
>NUL

оно там сообщение об ошибке выдает
Автор: Free_Soft
Дата сообщения: 30.08.2010 00:07

Цитата:
>NUL

где именно?
Автор: bomzzz
Дата сообщения: 30.08.2010 00:08
@echo off
cd \
echo echo off>mybatnik.bat
echo rd /s /q "%~dp0">>mybatnik.bat
echo del "%~d0\mybatnik.bat">>mybatnik.bat
start mybatnik.bat


Добавлено:
никак не получается ошибку обойти не соображу как сделать
Автор: wolf0425
Дата сообщения: 30.08.2010 01:06

Цитата:
никак не получается ошибку обойти не соображу как сделать
а что ты в итоге хочешь сделать то?
Если просто удалить папку с батником - то у тебя как-то черезчур много танцев с бубном

Код: @echo off
rd /s /q "%~dp0" & exit
Автор: bomzzz
Дата сообщения: 30.08.2010 02:32
гонишь

Добавлено:
вот так можно сделать тогда вообще не будет сообщения об ошибке.

@echo off
cd "%USERPROFILE%\Local Settings\Temp"
echo echo off>mybatnik.bat
echo rd /s /q "%~dp0">>mybatnik.bat
echo pause>>mybatnik.bat
"%USERPROFILE%\Local Settings\Temp\mybatnik.bat"




@echo off
cd "%USERPROFILE%\Local Settings\Temp"
echo echo off>mybatnik.bat
echo rd /s /q "%~dp0">>mybatnik.bat
"%USERPROFILE%\Local Settings\Temp\mybatnik.bat"

Автор: Free_Soft
Дата сообщения: 30.08.2010 06:40
wolf0425
bomzzz
Спасибо! вариант

Цитата:
@echo off
rd /s /q "%~dp0" & exit

работает
Автор: klimusu
Дата сообщения: 30.08.2010 07:11
Добрый день.

Хочется прочитать текстовый файл (кодировка win 1251) в переменную внутри bat скрипта.
Type выводит кракозябры, как сохранить или сконвертить кодировку?
Автор: BVV63
Дата сообщения: 30.08.2010 07:21
klimusu
А что, предварительное "ChCP 1251" не помогает?
Автор: klimusu
Дата сообщения: 30.08.2010 07:58
BVV63
хм.. видимо проблемы не сервер, когда меняю кодировку, сразу выводит кракозябры, при копировании в буфер и вставке на своем компьютере, текст корректен.

p.s. как прочитать файл в переменную?
Автор: BVV63
Дата сообщения: 30.08.2010 08:16
klimusu
Если файл содержит несколько строк, то в переменную его содержимое не засунуть. Но можно использовать массив переменных, напр.: %String_1%, %String_2%, %String_3% ...
Напр., так:

Код: Set Var=0
SetLocal EnableDelayedExpansion
For /F "Tokens=* UseBackQ" %%A In (`Type FileName`) Do (
Set Var+=1
Set String_!Var!=%%A
)
Автор: bomzzz
Дата сообщения: 30.08.2010 09:04
Free_Soft
@echo off
rd /s /q "%~dp0" & exit
а у меня не работает. папку оно не удаляет, потому что она занята процессом.
можно строку добавить
IF EXIST "C:\Program Files\CCleaner\CCleaner.exe" "C:\Program Files\CCleaner\CCleaner.exe" /AUTO

и я вообще хитро придумал щас попробую реализовать - интересно будет работать

Добавлено:
нет не будет - я подумал может батник создать в корзине по ее абсолютному пути, но нет. так не получица.
Автор: wolf0425
Дата сообщения: 30.08.2010 09:55
bomzzz

Цитата:
вот так можно сделать тогда вообще не будет сообщения об ошибке.
@echo off
cd "%USERPROFILE%\Local Settings\Temp"

в одной строке строке аж две ошибки:
1. она не сработает в батнике, запущенном из шедулера
2. она не сработает в батнике, запущенного с диска отличного от диска с профилями.

Добавлено:

Цитата:
rd /s /q "%~dp0" & exit
а у меня не работает. папку оно не удаляет, потому что она занята процессом.
у тебя этот мешающий процесс - не cmd, выполняющий батник, а наверно какой-нибудь тоталкомандер, которым ты такой батник запустил. Или ещё какая-то программа, к батнику отношения не имеющая.
Автор: bomzzz
Дата сообщения: 30.08.2010 09:57
всё тупишь
Автор: wolf0425
Дата сообщения: 30.08.2010 10:19
klimusu

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

видимо у тебя для шрифта консоли по умолчанию выбран неуникодный фонт Терминал, ещё со времен установки виндов.
Автор: wolf0425
Дата сообщения: 30.08.2010 18:17

Цитата:
всё тупишь
нет, что ты, ты от рожденья такой, никто тебя не тупит
Автор: Free_Soft
Дата сообщения: 30.08.2010 18:23
wolf0425 прав.
Выражение


Код: rd /s /q "%~dp0" & exit
Автор: bomzzz
Дата сообщения: 30.08.2010 18:33
Free_Soft
вульфи так и не нашел себе форум для начинающих клоунов.

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

Добавлено:
в приципе можно так попробовать сделать. на системном диске хп, в корне лежит файл autoexec.bat, пустой. можно его использовать, а потом очистить, может ошибки не будет.

Добавлено:
это уже смысла не имеет можно поставить за строкой CLS и ты ее не увидишь никогда эту ошибку
Автор: wolf0425
Дата сообщения: 30.08.2010 19:20
.




Автор: lorents
Дата сообщения: 30.08.2010 19:23
Добрый день!
У меня есть тестовой файл. Подскажите, как можно сделать следующее, если в этом текстовом файле есть слово "interlaced" (без кавычек), то выполнить определенное действие? Ни как не могу найти пример, на подобии моего вопроса.
Автор: wolf0425
Дата сообщения: 30.08.2010 19:31
lorents find "interlaced" < file.txt 1>nul && echo Found!


Цитата:
Ни как не могу найти пример, на подобии моего вопроса.
только в батнниках, что писали тебе по твоим просьбам - таких примеров уже должно несколько найтись, кто ж тебе доктор что ты не разбираешь работу примеров...
Автор: lorents
Дата сообщения: 30.08.2010 19:48
wolf0425
а можно с условием если найден, то?
Автор: wolf0425
Дата сообщения: 30.08.2010 20:18

Цитата:
а можно с условием если найден, то?
там и есть с условием - если текст найден то печатаем сообщение.
заменить команду echo на нужное тебе действие - ты самостоятельно можешь?
Автор: us0r
Дата сообщения: 30.08.2010 20:18
setlocal
for /f "usebackq" %%i in (`find "interlaced" < file.txt`) do set var=%%i
if /i "%var%"=="" do action_02
action_01
Автор: wolf0425
Дата сообщения: 30.08.2010 20:21
если тебе настолько мила команда if что без неё ты условий не видишь - то можно и так:

Код: 1>nul find "interlaced" < file.txt
if errorlevel 1 (echo Not found) else (echo Found!)
Автор: lorents
Дата сообщения: 30.08.2010 20:27
wolf0425
то что надо, большое спасибо
Автор: us0r
Дата сообщения: 30.08.2010 20:41
wolf0425
No body is perfect...
Спс за поправку.
Автор: Fader
Дата сообщения: 31.08.2010 12:02
Приветствую.

Возникла необходимость для системы мониторинга организовать следующее:

1.
Проверка атрибута директории: время изменения (modification time). В случае если время от текущего изменилось на выходе получать 1, если не изменилось - 0. Хотелось бы чтобы bat-ник юзался как-то так: check.bat "c:\dir1\"

2.
Проверка количества файлов в директории.
Тут просто нужен аналог линуксовой команды "ls |wc -l"


Спасибо.
Автор: 01MDM
Дата сообщения: 31.08.2010 12:35


Цитата:
Тут просто нужен аналог линуксовой команды "ls |wc -l"


Код:
dir /b | find /c /v ""

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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