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

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

Автор: madmasles
Дата сообщения: 25.07.2009 05:42
01MDM
smirnvlad
king_stiven

Большое Вам спасибо. C удалением папки более или менее разобрался.

Теперь такой вопрос. Скрипт sss.vbs :

[more]dim log
dim pas
log=InputBox("Введите Ла-ла-ла:" & vbcrlf & vbcrlf & vbcrlf & "Например - Ла-Ла-Ла", "Настройка")
set fso = createobject("scripting.filesystemobject")
set resfile = fso.opentextfile("log.clk", 8, true)
resfile.write log
resfile.close
pas=InputBox("Введите Да-да-да:" & vbcrlf & vbcrlf & vbcrlf & "Например - Да-Да-Да", "Настройка")
set fso = createobject("scripting.filesystemobject")
set resfile = fso.opentextfile("pas.clk", 8, true)
resfile.write pas
resfile.close[/more]

выводит по очереди два окна с предложением что-либо ввести с двумя кнопками "ОК" и "Отмена".
Возможно ли следующее:
1. Выводить не два окна по очереди, а одно окно с двумя предложениями ввода.
2. Убрать кнопку "Отмена" и оставить только "ОК".
3. Проконтролировать ввод, т.е. если ничего не введено в какой-либо строке, вылазил MsgBox "Вы не ввели "Ла-ла-ла" или "Да-Да-Да" и возврат к InputBox.
Заранее спасибо.
Автор: lorents
Дата сообщения: 25.07.2009 12:30
Refugee

Цитата:
надо скрипт на VBScript или на чём умеешь.

понятно, спасибо, буду разбираться
Автор: smirnvlad
Дата сообщения: 26.07.2009 05:46
madmasles

Цитата:
Возможно ли следующее:
1. Выводить не два окна по очереди, а одно окно с двумя предложениями ввода.
2. Убрать кнопку "Отмена" и оставить только "ОК".
3. Проконтролировать ввод, т.е. если ничего не введено в какой-либо строке, вылазил MsgBox "Вы не ввели "Ла-ла-ла" или "Да-Да-Да" и возврат к InputBox.
Заранее спасибо.

1,2. нельзя
3.
[more]
dim log
dim pas

function inputCheck(str) ' функция проверки ввода
inputCheck = true
if isEmpty(str) then inputCheck = false ' Проверка на empty
if isNull(str) then inputCheck = false ' Проверка на null
if ""=str then inputCheck = false ' Если нет символов в строке
if ""=Trim(str) then inputCheck = false ' Если в строке только пробелы
end function

do
log=InputBox("Введите Ла-ла-ла:" & vbcrlf & vbcrlf & vbcrlf & "Например - Ла-Ла-Ла", "Настройка")
if inputCheck(log) then exit do else msgbox "Не ввели ла-ла-ла"
loop

set fso = createobject("scripting.filesystemobject")
set resfile = fso.opentextfile("log.clk", 8, true)
resfile.write log
resfile.close

do
pas=InputBox("Введите Да-да-да:" & vbcrlf & vbcrlf & vbcrlf & "Например - Да-Да-Да", "Настройка")
if inputCheck(pas) then exit do else msgbox "Не ввели Да-Да-Да"
loop

set fso = createobject("scripting.filesystemobject")
set resfile = fso.opentextfile("pas.clk", 8, true)
resfile.write pas
resfile.close
[/more]
Автор: madmasles
Дата сообщения: 26.07.2009 08:04
smirnvlad

Большое спасибо.
3. Работает как надо. Даже лучше, чем я хотел. Т.е. даже если случайно нажимаешь "Отмена", идет возврат к вводу.


Цитата:
1,2. нельзя


Я не совсем понял. Нельзя только в InputBox, или нельзя в принципе в .vbs.
Автор: smirnvlad
Дата сообщения: 27.07.2009 06:29
madmasles

Цитата:
Нельзя только в InputBox, или нельзя в принципе в .vbs.

в .vbs


Цитата:
Т.е. даже если случайно нажимаешь "Отмена", идет возврат к вводу.

если при нажатии на отмену перестать надоедать пользователю, то надо добавить строку
[more]
do
log=InputBox("Введите Ла-ла-ла:" & vbcrlf & vbcrlf & vbcrlf & "Например - Ла-Ла-Ла", "Настройка")
if isEmpty(log) then Exit Do ' Нажата отмена
if inputCheck(log) then exit do else msgbox "Не ввели ла-ла-ла"
loop
[/more]
Автор: madmasles
Дата сообщения: 27.07.2009 06:44
smirnvlad

Спасибо.
Мне как раз надо надоедать пользователю, а то при отмене весь смысл теряется.
Автор: steeled
Дата сообщения: 27.07.2009 12:56
Добрый день! Помогите, плиз, разобраться с написанием батника!
Имеется - комплекс из N тачек. Выполняют технологические задачи на батниках. Все тачки в домене, залогинены под одним и тем же юзером - админом домена. Управляю всеми тачками через RDP.
Каким образом запустить батник на другом компе с основной тачки? Пробовал psexec, но что-то не то, никак не разберусь. К примеру, если через psexec запустить обычный calc, то в процессах на удаленной тачке calc.exe появляется, но, блин, калькулятора самого я не наблюдаю на экране моника удаленного компа! Подскажите, плиз, образец батника!
Автор: newb1e
Дата сообщения: 27.07.2009 13:54
Привет Всем! Нужна Ваша помощь!
Проблема такого характера :
Нужно проверить диск D на наличие всех файлов типа exe и сохранить их в отдельной директории согласно их нахождению . То есть :
имеем
D:\Shara\123.exe
D:\ABC\setup.exe
и т.д.
в итоге надо получить backup в виде
D:\backup\Shara\123.exe
D:\backup\ABC\setup.exe
и т.д.
Как реализовать ?

Добавлено:
Сам себе отвечу :
если на другой диск, можно одной командой:
Код:

XCopy D:\*.exe E:\backup\ /S

На тот же диск примерно так:
Код:

@Echo Off
SetLocal EnableExtensions

Set BackupDir=D:\backup
For /F "Delims=" %%I In ('Dir D:\*.exe /A-D /B /S') Do (
Echo %%~I
XCopy "%%~I" "%BackupDir%%%~pI" >nul
)

Автор: king_stiven
Дата сообщения: 27.07.2009 18:23
newb1e
ключ /i у XCopy не забывай
Автор: Farchmaher
Дата сообщения: 28.07.2009 22:40
Доброго времени суток.
Подскажите пожалуйста,как реализовать такую задачу:
комп в локальной сети,на нем два логических диска C и D
на D папка X(общедоступная).Нужно чтобы после включения компа
папка X удалилась без следа минуя корзину без возможности
восстановления.При этом чтобы на экран не выводилось никаких
диалоговых окон и без подтверждения удаления,вобщем без
какого либо участия пользователя.Подскажите очень нужно.
Заранее Благодарен.
Автор: madmasles
Дата сообщения: 29.07.2009 00:45
Здравствуйте всем.
Подскажите, пожалуйста, как создать из батника файл file.txt так, чтобы он обязательно был в кодировке DOS-866, если по умолчанию текстовые файлы создаются в 1251.
Автор: smirnvlad
Дата сообщения: 29.07.2009 07:12
madmasles
Либо сохранить батник в 866 кодировке, тогда и файлы будут в 866, а если из внешней утилиты или батника в 1251, то перекодировать можно так

Код:
chcp 1251
set "s=Текст в 1251 кодировке"
chcp 866
echo %s% > 866.txt
Автор: KapralBel
Дата сообщения: 29.07.2009 07:15
madmasles

Цитата:
Подскажите, пожалуйста, как создать из батника файл file.txt так, чтобы он обязательно был в кодировке DOS-866, если по умолчанию текстовые файлы создаются в 1251.

У меня все в 866
поясни проблему

Farchmaher
RD /?
Автор: madmasles
Дата сообщения: 29.07.2009 08:01
KapralBel
Батник во время работы пишет лог.txt. У меня стоит АкелПад, у него в настройках по умолчанию DOS-866. Обычно по умолчанию стоит 1251.Т.е. на другом компьютере приходиться при начале работы открывать лог.txt и, после появления первых строчек (кракозябров), сохранять в 866 кодировке. Пытался прописывать и chcp 1251 1 > nul, и chcp 866 1 > nul, и chcp 1251 > nul, и chcp 866 > nul, и chcp 1251, и chcp 866, все равно в
лог.txt кракозябры в 1251 кодировке. Пытался перекодировщиком (fdoswin.exe) через временный файл, все равно не работает. Уже не знаю что делать.
Автор: 01MDM
Дата сообщения: 29.07.2009 08:23
madmasles

Цитата:
Батник во время работы пишет лог.txt

А в лог что конкретно пишется? Приведи пример батника.

Автор: madmasles
Дата сообщения: 29.07.2009 11:14
01MDM
Извините.
Похоже, косяк мой. Делал все на стареньком ноутбуке. Он подвисал, подвисал и крякнул (жесткий диск). Пересел на другой компьютер и все стало ОК.

Еще раз извините за потраченное на меня время.

PS
Батник подключает VPN к интернету, периодически пингует и пишет в лог

echo Произведено %cot% проверок - успех. %time:~0,8%. >> LogInternet.txt

и т.д. и т.п.
Автор: levn
Дата сообщения: 29.07.2009 14:51
Всем привет.
Прошу прощения за вторжение в тему разговора)
Подскажите, плиз, как вывести в лог файл время выполнения команд батником.
Т.е. у меня батник выполняет нужные действия, а в конце выводит в лог файл результаты. Как в эти результаты вывести время работы батника?
Автор: king_stiven
Дата сообщения: 29.07.2009 14:59
levn
echo %time%>> 1.log
Автор: levn
Дата сообщения: 29.07.2009 15:03
king_stiven

это выводит системное время, а мне нужно вывести время, за которое батник отрабатывает.
я измерял это визуально - где-то за 30-50 секунд, а теперь это нужно мне в лог прописывать. Как - не знаю.
Автор: king_stiven
Дата сообщения: 29.07.2009 15:13
с точностью до секунды пойдёт?
Автор: levn
Дата сообщения: 29.07.2009 15:17
king_stiven

да, пойдет.
Автор: king_stiven
Дата сообщения: 29.07.2009 15:26
http://forum.ru-board.com/topic.cgi?forum=62&topic=15343&start=420
Вот мой вариант, но заточен под мой формат. не более часа показывает
for /f "tokens=2,3 delims=:" %%a in ("%Time:~0,-3%") do (
set min_begin=%%a
set sec_begin=%%b
)
ping -n 16 127.0.0.1>nul
for /f "tokens=2,3 delims=:" %%a in ("%Time:~0,-3%") do (
if "%%b" LSS "%sec_begin%" (
set /a sec+=60
set /a min-=1
)
if "%%a" LSS "%min_begin%" set /a min+=60
set /a sec+=1%%b-1%sec_begin%
set /a min+=1%%a-1%min_begin%
)
echo %min%min%sec%sec
pause
Автор: Upek
Дата сообщения: 29.07.2009 15:58
Добрый вечер, Всемогущий ALL!
Подскажите пожалуйста как узнать, дату и время создания файла вне зависимости от региональных настроек системы?

Автор: king_stiven
Дата сообщения: 29.07.2009 16:08
Upek
В шапке
Автор: Upek
Дата сообщения: 29.07.2009 16:50
king_stiven Там что то одни скрипты на узнавание текущей системной даты, а мне бы узнать дату создания файла.
Примерно в таком формате: 200907291240

Вот нашел
WScript.Quit (DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments.Item(0)).DateCreated, Now))

Только не врублюсь как тут именно возвращать DateCreated
Автор: TsAndr
Дата сообщения: 29.07.2009 18:14
Помочь кто нибудь может???
есть много файлов в одном каталоге:
94107256.DBF
94001256.DBF
94102230609230609.dbf
94101220609220609.dbf
.....

как их раскидать по разным каталогам, те что 9???????.DBF в один каталог, а те с длинным именем в другой???

move /Y "9???????.DBF" x:\work\out1
move /Y "9????????????????.DBF" x:\work\out2

это не работает, все файлы перекидываются в out1
Автор: king_stiven
Дата сообщения: 29.07.2009 18:50
TsAndr
А у меня работает.
Автор: TsAndr
Дата сообщения: 29.07.2009 19:06
Везет, а че мне делать?
Автор: king_stiven
Дата сообщения: 29.07.2009 19:25
TsAndr
Спроси у сэнсеев, обычно винды стандартны. скорее всего какая то ошибка. можешь целиком батник выложить.
Автор: Upek
Дата сообщения: 29.07.2009 23:57
TsAndr
Вот небольшой код у себя проверил, делает как надо )



Код: @echo off
for /f "usebackq tokens=*" %%a in (`dir 9*.dbf /a-d /on /b`) do (
if "%%~sna"=="%%~na" (move /Y %%a out1) else (move /Y %%a out2)
)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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