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

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

Автор: 01MDM
Дата сообщения: 21.09.2009 15:41
Vijkayb

Цитата:
и как это осуществить?

Не думаю, что это возможно.
Автор: bomzzz
Дата сообщения: 21.09.2009 15:56
да почему не возможно

Цитата:

ECHO OFF
COLOR 9F
CLS
WMIC OS Where Primary=True CALL Win32Shutdown 0
pause


менять наверно надо учетные записи, перегружать комп, после перезагрузки чтоб автоматически под другим юзером заходило, а батник как то в автозагрузку - чтоб под новым юзером запустился . а может просто можно делать необходимые действия и без перелогинивания. муторно это
а может дос приложение написать и из под него винду запустить
а может можно запустить какой нибудь защищенный процесс который после выхода в окно смены юзера пошлет с клавиатуры стрелки и ентер
Автор: mychaelo
Дата сообщения: 22.09.2009 20:59
суть проблемы:
имеется обширная папка с файлами (если точнее 2375 штук), именованы они по хэшу. необходимо переименовать их в нормальные имена и рассовать по папкам. еще имеется подготовленный файл с конечными путями, куда следует поместить файлы и какое имя собственно дать, и на всякий случай список оригинальных файлов. пробовал все это сделать в TC (поддерживает импорт списка), но он гордо заявил, что по папкам рассовывать не умеет, из-за чего оказался бесполезен. другие решения либо не имеют импорта списка вообще, либо он до жути корявый. за сим подкрепляю сам архив со списками:
hxxp://slil.ru/28006935
проблема еще в том, как бы сделать батник как можно более универсальный (у меня еще 7 штук аналогичных папок).
Автор: Buha
Дата сообщения: 23.09.2009 16:36
Народ, помогите решить задачу:
Есть папка c:\server.incom в ней много папок формата 20090923122409609.user25.1 (соответственно -год -месяц -день -время создания папки. пользователь. номер отчета от пользователя)Нужно чтобы из папок созданных в педыдущий час от часа выполения батника все файлы с расширением *.qst копировались в папку соответствующего юзера. Для папки 20090923122409609.user25.1 это c:\arhiv\user25 . Юзеров от до 100, отчетов до 50.
Автор: bomzzz
Дата сообщения: 23.09.2009 16:54
а если накладка выйдет и какая нибудь папка пропустится из расчета час назад. надо помнить последнюю разобранную папку.

ну начинай писать - поможем
да тута просто - несколько строк получица
Автор: tigr72
Дата сообщения: 24.09.2009 21:09
Доброго времяни суток всем.
При написаний очередной "кухни" под прошивку зверька. Сталкнулся с двумя проблемами. Одну из них очень очень довно (еще во времена MS-DOS 3.3) я решал, но просто за бытностью времен (да и системы круто изменились) все позабыл окончательно...
Проблема номер один.
Мне нужно поменять внутри файла с данными (не тхт) 3 байтика где эти байтики находятся я знаю (не в начале и не в конце). Как их можно поменять только средствами BAT файла??? Или стороней консольной программы, только что бы она это делала автоматически без лишних остановок и запросов...

Проблема номер два.
Как мне проверить размер файла? Т.е. мне в батнике нужно проверить получившийся файл и если он меньше или равнятся определенному размеру то продолжаем, если больше то "материмся" и выходим...

зы Заранее благодарен за помощь!
Автор: vgiki
Дата сообщения: 26.09.2009 07:35
Народ, подскажите как указывается в батнике путь на ftp адрес?

надо с одной машины копировать файл на фтп другой. На сервере требуется логин и пароль.

Заранее спасибо.
Автор: bomzzz
Дата сообщения: 26.09.2009 07:54
vgiki

Цитата:

Бывают ситуации, когда необходимо работать с ftp, не имея под рукой никакого графического клиента. Но не стоит отчаиваться, в Windows есть встроенный ftp клиент - ftp.exe. Его основные команды:
..........................................................................................
в BINARY не забудь переключица

Цитата:

ECHO OFF
COLOR 9F
CLS
FTP
PAUSE

и вот тута help набери в консоли

Добавлено:
батником не делал никогда - так в ручную фтепечил

Цитата:

ECHO OFF
COLOR 9F
CLS
echo OPEN ftp.mozilla.org>MYFTP.txt
echo ANONYMOUS>>MYFTP.txt
echo 123>>MYFTP.txt
echo BELL>>MYFTP.txt
echo DIR>>MYFTP.txt
echo CD pub>>MYFTP.txt
echo DIR>>MYFTP.txt
echo CD firefox>>MYFTP.txt
echo DIR>>MYFTP.txt
echo CD releases>>MYFTP.txt
echo DIR>>MYFTP.txt
echo CD 3.5.3>>MYFTP.txt
echo DIR>>MYFTP.txt
echo CD win32>>MYFTP.txt
echo DIR>>MYFTP.txt
echo CD ru>>MYFTP.txt
echo DIR>>MYFTP.txt
echo binary>>MYFTP.txt
echo STATUS>>MYFTP.txt
echo get "Firefox Setup 3.5.3.exe">>MYFTP.txt
echo quit>>MYFTP.txt
ftp -s:myftp.txt
DEL /Q MYFTP.txt
pause
Автор: dimpase
Дата сообщения: 26.09.2009 09:21
Добрый день, скажите как удалить устаревшие папки.
Есть папки вида 26-09-09 00
26-09-09 01
26-09-09 02
26-09-09 03
как удалить все папки старее 20 дней? заранее спасибо.
Автор: 01MDM
Дата сообщения: 26.09.2009 10:26
dimpase

Цитата:
как удалить устаревшие папки.

Высчитывать дату, исходя из названия, дело неблагодарное. Лучше воспользоваться утилитой forfiles.exe

Код:
forfiles /d -20 /c "cmd /c if @isdir==TRUE rd /s /q @file"
Автор: bomzzz
Дата сообщения: 26.09.2009 11:18


если батник большой и чтоб ошибок не возникало можно пролистать нужное количество строк, и "DATA блок для FTP" обойти переходом, чтоб выполнение в эту часть кода не передавалось. можно ремарками сделать и ремарки отрезать. лучше в конец прилепить и ендом выйти
Автор: vgiki
Дата сообщения: 26.09.2009 15:55
Благодарю всех, очень помогли=)
Автор: mozers
Дата сообщения: 26.09.2009 16:04
bomzzz
Цитата:
чтоб ошибок не возникало можно пролистать нужное количество строк
Чет никак не допетрю как это можно сделать. Приведи рабочий пример.
Автор: bomzzz
Дата сообщения: 26.09.2009 16:21
да наверно никак не получица, только через две три ошибки. может одну если гото сделать

может запустить батник перезаписать его в стандарте фтп команд, запустить фтп а после отработки еще раз перезаписать
нет так тоже не получается, стирать себя батник умеет, но весь он в память не грузится. может первую строчку сменить можно которая уже выполнилась
Автор: mozers
Дата сообщения: 26.09.2009 19:53
Задачка показалась интересной. Получился такой гибрид:
Код: @ECHO OFF
MORE /e +7 < %~nx0 > tmp
FTP -s:tmp -A
DEL tmp
EXIT /b

:: FTP commands
open ftp.mozilla.org
cd pub/addons/10
get adblock-0.5.2.055-fx+fl+mz+ns.xpi
bye
Автор: bomzzz
Дата сообщения: 26.09.2009 23:37
ну так не пачеснаму еще один файл использават

Цитата:

странно у меня этого в справке нету - написано exit параметры отсутсвуут
EXIT /B n
Using EXIT /B will stop execution of a batch file or subroutine and return control to the command processor or to the calling batch file or code immediately.
EXIT /B is available in Windows 2000 and later versions' CMD.EXE only.
If followed by an integer number the code will return an exit code or ERRORLEVEL equal to that number.

наверно так как это было добавленно позже для совместимости не включили. правда в справке написано color текст фон , а на самом деле наоборот

смайлик сделал
Автор: HaK1R
Дата сообщения: 27.09.2009 15:42
tigr72
1 ВОПРОС ответ скрывается в sed http://unxutils.sourceforge.net/
2 ВОПРОС

Код: @echo off
for /f "tokens=*" %%a in ('dir /b /a um9.fau`la') do (
if %%~za GTR 1024 (goto :EOF)::Проверка размера(в байтах), если больше выходим, иначе продолжаем
)
::blablabla
::prodoljenie programmbl
Автор: XXXXL
Дата сообщения: 27.09.2009 20:48
Здравствуйте ребята!

Нужен батник который проверяет в определенной категории наличие файла к примеру 1.txt который находится в "C:\Temp" если его там не находит запускает 1.bat если находит то 2.bat.
Помогите пожалуйста реализовать.
Спасибо!

Автор: bomzzz
Дата сообщения: 27.09.2009 21:11
W+F1

Цитата:

if [not] exist имя_файла команда [else выражение]
Автор: XXXXL
Дата сообщения: 28.09.2009 13:36
bomzzz, спасибо!

Ещё есть проблема... иной раз когда в батнике прописано запускать определёную программу, предположим "1.exe" а её нет, то выскакивает сообщение с ошибкой "Windows не удалось найти 1.exe и т.д"
Если возможность избежать появление этого сообщения? тоесть если даже "1.exe" нет, то батник начинает выполнять следующие ниже идущие задачи.

Спасибо!
Автор: 01MDM
Дата сообщения: 28.09.2009 13:48
XXXXL
Ну так и используй условие "if [not] exist":

Код:
@echo off
if exist 1.exe 1.exe
echo going next
Автор: XXXXL
Дата сообщения: 28.09.2009 14:43
01MDM, Спасибо большое!
Автор: NuclearBox
Дата сообщения: 29.09.2009 07:20
Есть ли способ контролировать из командной строки Интернет-соединение?

Подскажите, уважаемые. Если можно - как написать код такого батника?

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

Посодействуйте, пожалуйста, решению задачи.
Автор: Sergey_AV
Дата сообщения: 29.09.2009 07:55
NuclearBox
Батником - не знаю, совсем недавно делал такое при помощи .vbs. Только чуть "по-задрюченнее": мне надо, чтобы когда инет "пропадал" запускалась прога на "перезагрузку" роутера . Могу выложить пример, если интересно.
Автор: vitrzn
Дата сообщения: 29.09.2009 08:19
Нужно удалить в папке файлы старее 14 дней (с утилиткой forfiles что-то не получилось).

Я так полагаю, что проще не выбирать "что старше", а:
взять сегодняшнюю дату , отнять от неё "14"
скопировать куда-то всё что старше "сегодня - 14"
удалить все файлы , а потом вернуть обратно скопированное (удалив временную папку)

Если это возможно (?) помогите с батником!
Автор: 01MDM
Дата сообщения: 29.09.2009 08:47
vitrzn

Цитата:
с утилиткой forfiles что-то не получилось

Что не получилось?
Автор: vitrzn
Дата сообщения: 29.09.2009 11:07
01MDM
Спасибо, что заставил ещё раз всё проверить , я просто поторопился написать!
проблема была в пробелах ;(
Автор: 01MDM
Дата сообщения: 29.09.2009 11:25
vitrzn
Я помню, когда только обзаводился этой утилитой, то разные ее версии имели схожий, но все-таки различный синтаксис
Автор: NuclearBox
Дата сообщения: 29.09.2009 11:57
Sergey_AV

Код: Батником - не знаю, совсем недавно делал такое при помощи .vbs. Только чуть "по-задрюченнее": мне надо, чтобы когда инет "пропадал" запускалась прога на "перезагрузку" роутера . Могу выложить пример, если интересно.
Автор: Sergey_AV
Дата сообщения: 29.09.2009 12:15
NuclearBox
OK.
[more]
'***************************************************************************************************
Option Explicit
'***************************************************************************************************
Main
'***************************************************************************************************
Private Function IsValidObject(ByVal o)
IsValidObject = False
If IsObject(o) Then If Not o Is Nothing Then IsValidObject = True
End Function
'---------------------------------------------------------------------------------------------------
Private Sub ReleaseObject(ByRef o)
If IsValidObject(o) Then Set o = Nothing
o = Empty
End Sub
'***************************************************************************************************
Private Function CheckPing(ByVal url)
Dim oShell, oEnv, oFSO, oFile, oTextStream, sCmd, oExec, txt, txt1, n
Dim logFileName

logFileName="c:\pingLog.txt"
Set oShell = CreateObject("WScript.Shell")
Set oEnv = oShell.Environment("Process")
sCmd = oEnv("COMSPEC")
ReleaseObject oEnv
Set oExec = oShell.Exec(sCmd & " /C ping.exe " & url & " 2>&1")
ReleaseObject oShell
If Not IsValidObject(oExec) Then
CheckPing=False
Exit Function
End If
n=70
Do While (oExec.Status = 0) AND (n>0)
WScript.Sleep 200
n = n - 1
Loop
If oExec.Status = 0 Then
oExec.Terminate
ReleaseObject oExec
CheckPing = False
Exit Function
End If
txt = oExec.StdOut.ReadAll
ReleaseObject oExec
txt1 = Replace(txt, "TTL", "AAA")
CheckPing = Not (txt = txt1)
If Not CheckPing Then
Set oFSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set oFile = oFSO.GetFile(logFileName)
On Error Goto 0
If IsValidObject(oFile) Then
Set oTextStream = oFile.OpenAsTextStream(8)
Else
Set oTextStream = oFSO.CreateTextFile(logFileName, True)
End If
ReleaseObject oFSO
oTextStream.WriteLine "*************************************************"
oTextStream.Write txt
ReleaseObject oFile
ReleaseObject oTextStream
End If
End Function
'***************************************************************************************************
Private Sub CheckOnce
Dim oShell
If Not CheckPing("forum.ru-board.com") Then
WScript.Sleep 50000
If Not CheckPing("google.ru") Then
WScript.Sleep 90000
If Not CheckPing("forum.ru-board.com") Then
WScript.Sleep 50000
If Not CheckPing("google.ru") Then
'WScript.echo "Ping Fail"
Set oShell = CreateObject("WScript.Shell")
oShell.Run """приложение 1.exe""", 2, true
ReleaseObject oShell
End If
End If
End If
End If
End Sub
'***************************************************************************************************
Private Sub Main()
Dim oShell
Set oShell = CreateObject("WScript.Shell")
oShell.Run """приложение.exe 2.exe""", 2, true
ReleaseObject oShell
Do While True
CheckOnce
WScript.Sleep 3600000
WScript.Sleep 10000
Loop
End Sub
'***************************************************************************************************
[/more]
Как-то примерно так - программер из меня тот еще . Но идея, надеюсь, понятна. Рад буду комментариям, в частности усовершенствованию скрипта - нет ведь ничего идеального...

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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