singlepost

BAT-файлы Windows. << На главную или назад  

Тема для обсуждения пакетных файлов.

Собственно, сделал маленький батник для упрощения повседневной эксплуатации функции net send. Вроде работает, но хотелось бы получить оценку адекватности такого решения. Цель была – максимально упросить для пользователя процесс отправки сообщения на заданный локальный компьютер.

@Echo off
SetLocal EnableExtensions EnableDelayedExpansion

copy con %tmp%\msg.tmp

If Exist %tmp%\msg.tmp (
For /F "Delims=" %%I In (%tmp%\msg.tmp) Do Set MSG=%%~I

NET SEND computer_name !MSG!

del %tmp%\msg.tmp
)

Если что, сильно не бейте – так как опыта ноль и вообще толком ничего не умею.

И еще вопрос, насчет команды For, она у меня обрабатывает только первую строку файла, она может обрабатывать весь файл?

22 ответов в теме “BAT-файлы Windows.”

  1. 22
    Леонид Максимов ответил:

    только настроить, если вообще возможно. инструкцию читайте.

  2. 21
    Данила Курдюмов ответил:

    Понятно, спасибо.
    Мессенджер чудит, помог рестарт службы. Хотя перезагрузка системы не помогала.

    А насчёт роутера, это никак не обойти? То есть, с этим роутером я не смогу пользоваться этой функцией?

  3. 20
    Леонид Максимов ответил:

    1. бывает, гуглите на тему messenger.
    2. роутер не пропускает igmp-пакеты наружу.

  4. 19
    Данила Курдюмов ответил:

    Извиняюсь за вопросы не совсем по теме, но никак не могу найти решение.
    Когда пытаюсь отправить себе net send сообщение через консоль или бат-файл выходит ошибка:
    An error occurred while sending a message to имя_моего_компьютера.
    The message alias could not be found on the network.
    More help is available by typing NET HELPMSG 2273.
    При этом, если выполнить «net send * Сообщение», сообщение отправляется и приходит всем в рабочей группе, в том числе и мне. И я пробовал отправлять сообщение через стороннюю программу (Network Assistant), тоже всё работает. Но «net send имя_моего_компьютера Сообщение» не работает.
    Гуглить пробовал, но решение не нашёл.

    И ещё вопрос, почему pathping не идет дальше роутера?
    Tracing route to ya.ru [213.180.204.8]
    over a maximum of 30 hops:
    0имя_компьютера [192.168.1.2]
    1my.router [192.168.1.1]
    2***

  5. 18
    Денис Шаркунов ответил:

    У меня без кавычек работает =)

  6. 17
    Денис Шаркунов ответил:

    Дайте скриптов (По прикалыватся над друзьями)
    А можно сделать бат , что бы он анти-вирь обходил ?
    А можно ещё батником бомбить по почте например , без согласия подтверждения жертвы ?(Ну что бы типа как он письмо откроет , сразу происходит автозапуск) Без его согласия =))
    Напишите пжл в личку =)

  7. 16
    Леонид Максимов ответил:

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

    for %i in ("c:\program files\winrar\winrar.exe") do @start %~fsi

  8. 15
    Roman Voloshyn ответил:

    start "c:\Program Files\WinRAR\WinRAR.exe"

    не работает(

  9. 14
    Леонид Максимов ответил:

    start explorer
    start explorer .
    start explorer \

    работает.

  10. 13
    Roman Voloshyn ответил:

    не работает, если exe запускается с ключами, да и без ключей тоже

  11. 12
    Леонид Максимов ответил:

    используйте start.

  12. 11
    Roman Voloshyn ответил:

    в принципе можно и ярлыком, а через батник никак?

  13. 10
    Леонид Максимов ответил:

    а ярлыки вам чем не угодили? используйте start.

  14. 9
    Roman Voloshyn ответил:

    мне нужно чтобы он запускал приложение и после этого закрывался, а не ждал пока закроется запущенное приложение

  15. 8
    Подмогаев Свят ответил:

    как выполнятся все инструкции, скрипт прекратит работу.

  16. 7
    Roman Voloshyn ответил:

    Подскажите, пожалуйста, как выполнить закрытие батника

  17. 6
    Данила Курдюмов ответил:

    Нашёл! Виноват – просмотрел параметр /p у set. Вот новый вариант:
    @Echo off
    set /P MSG="Message to computer_name: "
    NET SEND computer_name %MSG%

  18. 5
    Данила Курдюмов ответил:

    Чтобы можно было использовать команду copy con, что позволяет ввести текст с клавиатуры через консоль. То есть пользователю не нужно будет вводить никаких команд, только текст сообщения. Понимаю, что глупо, должно быть, но я эту команду знал, а как иначе такое реализовать – нет.
    Потихоньку почитываю справку и примеры из интернета, но пока не нашел, как еще этого добиться.
    А еще это пережиток предыдущей версии…

  19. 4
    Леонид Максимов ответил:

    используйте copy con con, как все нормальные люди. не нужен вам временный файл.

  20. 3
    Леонид Максимов ответил:

    зачем вам вообще временный файл?

  21. 2
    Данила Курдюмов ответил:

    Вроде понял, Do выполняется для каждой строки отдельно и переменной поочередно присваивается первая, вторая и тд. строки. И в конце в ней остается последняя строка.

    А в каком направлении упростить можно? Без временного файла обойтись, или принципиально иначе сделать?..

  22. 1
    Леонид Максимов ответил:

    1. не самое простое решение.
    2. может.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.