Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Управление из командной строки


Рекомендуемые сообщения

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

1-ое:

:Loop
создаем в начале цыкла метку для перехода GOTO

2-ое:

ping ya.ru | find /i "(100"
вместо ya.ru пишу ip-адресс, например 10.10.10.5, что значит "|"?

find /i - ищу в тексте, без учета регистра следующий текст "(100", вопрос что такое "(100"!!???

3-ее:

if %errorlevel% == 1 goto Loop
, на сколько я понял то "1" возвращяется когда предыдущая операция завершена неудачно, т.е. в нашем случае если пинга нету, правильно? Изменено пользователем Sidoy
Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 589
  • Создана
  • Последний ответ

Топ авторов темы

Sidoy:

вместо ya.ru пишу ip-адресс

Зачем? :dontgetit:

что значит "|"?

Это передаёт управление следующей команде, чтобы та смогла обратиться к результатам первой (что-то в этом роде), а также это разделитель между командами...

т.е поиск осуществляется в результатах возвращённых после ping...

что такое "(100"

Как я понял, это должно быть 100% потерь, потом ищем, если ping вернул 100% потерь, значит при поиске команда find вернёт уровень ошибочности 0, в противном случае 1 (и тогда значит всё в порядке).... хотя я бы сделал так цикл (более надёжнее):

:LoopPing Google.com | Find /i "(100%%"If %ErrorLevel%==1 Goto Loop

Т.е мы проверяем пингуется ли какой нибудь сервер (который очень редко падает, Google как раз ну оооочень редко падает - если вообще когда либо падает), и в результатах пинга ищем 100% - если не найдено, значит комманда find установит уровень ошибочности на 1, и тогда мы знаем что не было 100 процентов потерь, значит продолжаем цикл... если же найдено 100%, значит уровень ошибочности будет равен нулю, и тогда можно подключать соеденение и возвращаться на цикл.

на сколько я понял то "1" возвращяется когда предыдущая операция завершена неудачно, т.е. в нашем случае если пинга нету, правильно?

Нет, последняя командо то была Find, она и задаёт уровень ошибочности :doh:

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

CreatoRПривет сможешь написать следующие батники?

Задание 1. Создать командный файл,который позволяет по требованию пользователя:

1. распоковать архив формата arj в указанный каталог

2. распоковать архив формата zip в указанный каталог

3. если не указаны параметры командного файла, выводит подсказку.

Задание 2. Реализуйте командный файл в ОС Linux, который может выполнять следующие действия:

Вывести на экран содержимое корневого каталога, отсартированное по времени модификации файлов. В этом каталоге образовать свой пользовательский каталог, создать в нём файл, переименовать его, вывести содержимое файла на экран. Перенести данный файл в родитеський каталог. Перейти в корневой каталог. Вывести на экран календарь на текущий год.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

CreatoR

Приветствую.

Случайно увидел Вашу тему, и вспомнил о вопросе, на который никак не найду ответ. С Вашего позволения...

Идея: быстрый доступ с любого места компьютера (пользую Total Commander) к файлу запуска определённой программы.

Реализация: имеем программку "z.bat", которая лежит в одной из системных папок (проверил командой "set p" - путь к этой папке указан):

@echo off

start "c:\Program Files\Some Dir\Some SubDir\commandfilewithlongname.exe"

exit

пробовал также всякие вариации (в т.ч. пути без пробелов):

@echo off

cd "c:\Program Files\Some Dir\Some SubDir\commandfilewithlongname.exe"

start commandfilewithlongname.exe

exit

Проблема: При запуске из коммандной строки "z" и напрямую (double-click по bat-файлу) открывается консоль, в которой видно, что была отработана целевая команда "commandfilewithlongname.exe" (её название в ком.строке и заголовке окна), однако сама программа при этом не запустилась.

Можно ли по описанию определить, в чём моя ошибка?

Спасибо.

Ссылка на комментарий
Поделиться на другие сайты

kadvlad:

В каждом варианте - по ошибке.

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

Во втором варианте - неправилен синтаксис команды cd. С кавычками все в порядке, но параметр не должен заканчиваться именем файла. Он должен заканчиваться именем папки (каталога), содержащей этот файл, поскольку текущей (рабочей) объявляется именно папка, а не файл.

Ссылка на комментарий
Поделиться на другие сайты

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

Спасибо. Действительно, так теперь работает.

Раньше привык заключать в кавычки весь путь целиком - как в Тотал Коммандере.

Во втором варианте - неправилен синтаксис команды cd.

Здесь явно ошибся, виноват. Недосмотрел.

Спасибо за помощь.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Доброе время суток товарищи!

Помогите немного разобраться.

Значит замут такой нужно создать батник который будет запускаться на серваке назначенными заданиями и будет выполнять следующие действия:

Пинговать определенный компьютер - если компьютер не в сети то пинговать пока он не появиться как только он появиться нужно начать копировать файлы с указанного места на тот комп который пингуется, после копирования создать лог который будет содержать такие данные 1.Лог файл обзывается названием сервака 2. Дату копирования, 3. время копирования, 4.Сведения о файле, 5. после копирования формировать лог файл и выкладывать с помощью wput выкладывать лог на фтп.

Не подумайте что я Вас прошу сделать все это - это уже кое как сделал - но не уверен что правильно и совсем тем путем - помогите кто может - плиз!!

@Echo onping 10.0.9.38 | find /i "(100"if %errorlevel% == 1 goto exitecho Restart...:Exitdate /t >kvdc0.txttime /t >time.txtdir "D:\1C BackUp\friday\" >D:\Backuplog\dir.txtdir "D:\1C BackUp\Monday\" >D:\Backuplog\dir1.txtdir "D:\1C BackUp\saturday\" >D:\Backuplog\dir2.txtdir "D:\1C BackUp\sunday\" >D:\Backuplog\dir3.txtdir "D:\1C BackUp\thursday\" >D:\Backuplog\dir4.txtdir "D:\1C BackUp\tuesday\" >D:\Backuplog\dir5.txtdir "D:\1C BackUp\wednesday\" >D:\Backuplog\dir6.txtcopy /y "D:\1C BackUp\friday\*.bkf" \\10.0.9.38\c$\Backup\*.bkf >copy.txtcopy /y "D:\1C BackUp\Monday\*.bkf" \\10.0.9.38\c$\Backup\*.bkf >copy1.txtcopy /y "D:\1C BackUp\saturday\*.bkf" \\10.0.9.38\c$\Backup\*.bkf >copy2.txtcopy /y "D:\1C BackUp\sunday\*.bkf" \\10.0.9.38\c$\Backup\*.bkf >copy3.txtcopy /y "D:\1C BackUp\thursday\*.bkf" \\10.0.9.38\c$\Backup\*.bkf >copy4.txtcopy /y "D:\1C BackUp\tuesday\*.bkf" \\10.0.9.38\c$\Backup\*.bkf >copy5.txtcopy /y "D:\1C BackUp\wednesday\*.bkf" \\10.0.9.38\c$\Backup\*.bkf >copy6.txtcopy kvdc0.txt+time.txt+copy.txt+copy1.txt+copy2.txt+copy3.txt+copy4.txt+copy5.txt+copy6.txt+dir.txt+dir1.txt+dir2.txt+dir3.txt+dir4.txt+dir5.txt+dir6.txtD:\wput\wput.exe d:\loglist.txt ftp://fort:хххххххх@хххх.ххххххх:21/LogBackup/kvdc0.txt
Ссылка на комментарий
Поделиться на другие сайты

TAPAKAH: для начала попробуй рассмотреть возможность оптимизации своего кода.

например эту часть

date /t >kvdc0.txt

time /t >time.txt

dir "D:\1C BackUp\friday\" >D:\Backuplog\dir.txt

...

dir "D:\1C BackUp\wednesday\" >D:\Backuplog\dir6.txt

можно выразить аккуратнее, используя утилиту forfiles и время\дату я бы советовал записывать в имя файла а не в его содержимое.

set sourse_dir="D:\1C BackUp"for /f "tokens=1,2 delims=." %%i in ('date/t') do (set chislo=%%iset mesac=%%j)for /f "tokens=1,2 delims=:" %%i in ('time/t') do (set chas=%%iset min=%%j)forfiles -p%sourse_dir% -s -c"cmd /c if @ISDIR==FALSE echo @PATH\@FILE >> %sourse_dir%\log_%chislo%-%mesac%_%chas%-%min%.txt"

далее

copy /y "D:\1C BackUp\friday\*.bkf" \\10.0.9.38\c$\Backup\*.bkf >copy.txt

...

copy /y "D:\1C BackUp\wednesday\*.bkf" \\10.0.9.38\c$\Backup\*.bkf >copy6.txt

реализуется одной командой xcopy но я бы советовал подумать о сжатии файлов перед передачей используя скажем бесплатный 7zip (консольный)

получится что-то вроде

set arhive_dir="D:\Temp"7za.exe a -tzip -r %arhive_dir%\arhiv.zip %sourse_dir%\*.bkf >> %sourse_dir%\log_%chislo%-%mesac%_%chas%-%min%.txt

и потом уже перемещение архива на удаленный комп + добаляем в имя дату

move %arhive_dir%\arhiv.zip \\10.0.9.38\c$\Backup\arhiv_%date%.zip

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

Ссылка на комментарий
Поделиться на другие сайты

Привет.

Нужен батник или vbs, лучше и то и другое, а также запускалось в невидимом режиме.

Очищать надо конечную папку по пути: [HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache]

Ссылка на комментарий
Поделиться на другие сайты

Wu-Tang: ну строчка должна быть вот такой

REG DELETE HKCU\Software\Microsoft\Windows\ShellNoRoam\MUICache\ /f

а по скрытности ищи своё решение :)

Изменено пользователем adm_art
Ссылка на комментарий
Поделиться на другие сайты

Ray:

Так /f тоже надо, а то запрос на удаление требовать будет.

А как сделать, чтоб батник запускался в невидимом режиме?

Ссылка на комментарий
Поделиться на другие сайты

Wu-Tang: а как ты его планируешь запускать? если средствами Планировщика то консольное окно не отображается.

кстати здесь уже говорилось об утилите CMDOW, с ее помощью так же можно это сделать.

wiki по использованию утилиты

Ссылка на комментарий
Поделиться на другие сайты

Wu-Tang:

Вот vbs'ка (хотя не по теме):

Set WshShell = CreateObject("WScript.Shell")WshShell.Run "%comspec% /c REG DELETE HKCU\Software\Microsoft\Windows\ShellNoRoam\MUICache\ /f /va", 0, True
Ссылка на комментарий
Поделиться на другие сайты

Значок привязан к типу файлов VBS. Можно поменять его для всех файлов этого типа (с этим расширением) или сделать к файлу ярлык, для ярлыков можно задать индивидуальные значки.

Ссылка на комментарий
Поделиться на другие сайты

Тролль:

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

Microangelo вроде, но не уверен.

Ссылка на комментарий
Поделиться на другие сайты

Wu-Tang:

Это уже не в самом файле VBS, а внешняя программа для изменения интерфейса. На другом компьютере иконка станет опять стандартной.

Насчет индивидуальных иконок именно для файлов со скриптами и документами в Microangelo точно не помню, но вполне может быть, легко попробовать, программка небольшая. Можно скачать на Софтодроме, хотя она шароварная. Я когда-то использовал Microangelo для анимации иконок, это красиво. Потом мелькание на экране мне надоело, как всегда у меня с украшательством. В конце концов остается только то, что полезно, а не то, что красиво :) .

Ссылка на комментарий
Поделиться на другие сайты

Помогите, плиз.

Стоит задача - запустить прогу из командной строки с определенными параметрами запуска, а потом тупо ее закрыть.

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

Ссылка на комментарий
Поделиться на другие сайты

Polizzay: Если программа не поддерживает возможность запуска с параметрами, задача невыполнима.

Почему нельзя удалить этот файл отдельно?

Ссылка на комментарий
Поделиться на другие сайты

Polizzay: Если программа не поддерживает возможность запуска с параметрами, задача невыполнима.

Почему нельзя удалить этот файл отдельно?

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

Ссылка на комментарий
Поделиться на другие сайты

но как бы закрыть программу из батника...
С помощью системной утилиты taskkill. Описание и примеры использования, как обычно, можно получить запуском taskkill -?
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...