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

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

Автор: Widok
Дата сообщения: 10.03.2009 12:38
Командная строка, батники\сценарии (bat, cmd)
(часть 1) (часть 2)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.


Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!

Примечание: Большие куски кода заключайте в тэг [no][more][/no]

Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5

Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
· Переход из 32-битной версии cmd.exe в 64-битную
Автор: Kilyan
Дата сообщения: 10.03.2009 16:21
Возможно ли отправить письмо(+возможное вложение) через Microsoft Exchange Server из ком. строки(может через какую утилитку)
Программа для работы с ним (Microsoft Outlook)...
Автор: Firstarey
Дата сообщения: 10.03.2009 18:31
Как реализовать печать из батника?
файл в той же директории, команда print %name% выдает ошибку "Не удается инициализировать устройство PRN"
Автор: LEDRA
Дата сообщения: 10.03.2009 21:24

Цитата:
Как реализовать печать из батника?
файл в той же директории, команда print %name% выдает ошибку "Не удается инициализировать устройство PRN"


Присоединяюсь к вопросу. Только еще интерисует как сделать двусторонюю печать?
Автор: BorlandIMHO
Дата сообщения: 10.03.2009 22:19
Firstarey
Печать чего? Простой текст (DOS/Win/*NIX/UTF) или какой-то документ?
Печать куда (принтер - локальный LPT/USB, сетевой, принтсервер)?
Печать под какой ОС?
От этого тоже многое зависит...
Универсальное решение для TXT файлов в кодировках cp1251 и Unicode, любая Windows, любой принтер:
Код: NOTEPAD /P %name%
Автор: LEDRA
Дата сообщения: 10.03.2009 22:52
Конкретизирую задачу.
Необходимо выводить на печать в дуплексном режиме Word PDF Xls документы.
Причем настройки принтера по умолчанию менять нельзя. Возмоно такое через батник реализовать?
Автор: BorlandIMHO
Дата сообщения: 10.03.2009 23:19
LEDRA
При такой постановке вопроса - нет, нельзя.
"Word PDF Xls документы" соответствующими программами при печати из командной строки всегда выводятся на принтер по умолчанию с теми его настройками, что заданы опять же по умолчанию. Ключи изменения такого поведения данных программ мне лично неизвестны, и сомневаюсь я, что они вообще есть...
В частности для конкретного принтера можно изучить где и как он хранит свои настройки (в реестре), перед печатью забэкапить настройки, поменять на нужные, после печати восстановить. Но таковое решение не может быть универсальным...
Автор: LEDRA
Дата сообщения: 11.03.2009 08:44
Жаль.
А можно вывести на печать документ на принтер не по умолчанию, а на другой?
Автор: Firstarey
Дата сообщения: 11.03.2009 12:40
BorlandIMHO

Цитата:
Печать чего? Простой текст (DOS/Win/*NIX/UTF) или какой-то документ?

в данном конкретном случае распечатать надо файл без разрешения с DOS (cp866) текстом

Цитата:
Печать куда (принтер - локальный LPT/USB, сетевой, принтсервер)?

печать необходимо вывести на принтер установленный по умолчанию, файл будет использоваться на разных машинах

Цитата:
Печать под какой ОС?

winXP, для висты тоже нужен вариант


делал так:
(Hp - сетевое имя принтера)

Код:
net use lpt1: \\note\hp
print %name% /D:lpt1
Автор: NvvLazyTiger
Дата сообщения: 11.03.2009 15:06
bk99
Цитата:
Да нет же, ты не понял! Просто помоги мне
Цитата: как создать список файлов компа №1 и как на компе №2 этот список обработать.
Как всё это в батнике организовать или скрипт какой-нибудь простенький... Без дискуссий... Тупо подскажи мне как создать список файлов в директории со семи путями и подпапками. И как потом скопировать на флешку только те файлы из указанной директории, которые отсутствуют в списке. Оставим пока даты создания, контрольные суммы и прочее.
Автор: rBBWYwg
Дата сообщения: 11.03.2009 16:40
Господа, есть ли на примете способ удалять из cmd копии файлов (по содержимому), или может программа, которая способна выполнять сценарий такого удаления из-под командной строки?
Автор: n0namer
Дата сообщения: 11.03.2009 16:43
Господа, как средствами JScript или VBScript изменить дату и время создания и открытия файла без использования сторонних приложений, типа Attribute changer ShellToys и т.д.?
Дату модификации можно поменять так:

Код:
var shell, folder, file;
shell = new ActiveXObject('Shell.Application');
folder = shell.NameSpace('C:\\Scripts\\Setdate\\');
file = folder.ParseName('v28112008.rtf');
file.ModifyDate = '12/28/2008 16:00:00';
Автор: vitrzn
Дата сообщения: 11.03.2009 18:10
Kilyan

Цитата:
blat — отправка почты из консоли


ТАК ведь чуть выше написано !!!
http://www.blat.net/
Автор: uZver
Дата сообщения: 12.03.2009 10:51
LEDRA
для doc,xls
если есть OpenOffice можно использовать его
"soffice.exe -p test.doc" - на принтер по умолчанию
"soffice.exe -pt myprn test.doc" - на произвольный принтер

вот тут есть еще ключи для "стандартных" программ.
для pdf можно использовать adobe reader foxit reader (для произвольного принтера), параметры по ссылке выше
Автор: Kilyan
Дата сообщения: 12.03.2009 11:05
vitrzn
если по СМТП как раз подходит, а вот через Microsoft Exchange Server уже нет!
Автор: Firstarey
Дата сообщения: 12.03.2009 12:27
знатоки!
как же быть с возникшей проблемой?
Автор: Ortios
Дата сообщения: 12.03.2009 23:02
n0namer; ALL
А как изменить твой код, чтобы менял дату и время модификации каталога, а не файла?
Например, C:\Test ? Помогите, очень надо.
Автор: Shustrikf
Дата сообщения: 13.03.2009 10:21
Доброго Вам светлые умы нашего форума... У меня такой вопрос можна ли запретить запуск определенного приложения и тестировать на запуск нового этого же приложения с другова диска с одной машины по сети . Т.е. ключаю батник со своей машины и просто тот чел с другова компа неможет запустить программку ... т.е. он либо удаляет ее вообще или запрещает в реестре или помещаю батник на комп другова компа в автозагрузку и оно запрещяет запуск этой программы ... ответе мне пожалуйста на такую задачу...

Добавлено:
помогите мне...
Автор: LEDRA
Дата сообщения: 13.03.2009 12:41

Цитата:
для doc,xls
если есть OpenOffice можно использовать его
"soffice.exe -p test.doc" - на принтер по умолчанию
"soffice.exe -pt myprn test.doc" - на произвольный принтер

вот тут есть еще ключи для "стандартных" программ.
для pdf можно использовать adobe reader foxit reader (для произвольного принтера), параметры по ссылке выше


Спасиб. Наверное так и прийдется сделать.

Подскажите еще такой вопрос по печати. Принтер у меня сетевой, со встроеной сетевой картой и независимо подключен к сети - как мне его указать?
Автор: Maza_Faka
Дата сообщения: 14.03.2009 08:54
Ortios

Цитата:
чтобы менял дату и время модификации каталога

Можно с помощью утилиты nircmd.exe

Код:
nircmd setfilefoldertime c:\test 01.01.2009
Автор: Ortios
Дата сообщения: 14.03.2009 15:58
Maza_Faka,
Спасибо, nircmd подойдет на первое время, но в идеале хотелось бы на vbs/js.
Автор: vitrzn
Дата сообщения: 15.03.2009 10:41
Возможно-ли с помощью батника сделать такое?

1. В текущей папке есть файл Pass (просто пустой файл)
нужно его название скопировать в буфер обмена, для того чтобы потом из буфера (руками) вставить в нужное место .

2. Или по другому, запустить батник в котором уже есть этот Pass для того чтобы потом просто Ctr+V.

3. Ну или самое лучшее. запустить батник , который в буфер скопирует текстовый Pass и потом запустит Prog.exe и вставит из буфера Pass в открытое окошко Prog.exe
Автор: Maza_Faka
Дата сообщения: 15.03.2009 12:12
Ortios

Цитата:
но в идеале хотелось бы на vbs/js


Код:
Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.NameSpace("C:\")
Set objFolderItem = objFolder.ParseName("test.txt")

objFolderItem.ModifyDate = "01/01/2008 8:00:00 AM"
Автор: Kilyan
Дата сообщения: 15.03.2009 13:57
Maza_Faka
Может у вас найдется ответ:

Цитата:
Возможно ли отправить письмо(+возможное вложение) через Microsoft Exchange Server из ком. строки(может через какую утилитку)
Программа для работы с ним (Microsoft Outlook)...

Автор: igor_andreev
Дата сообщения: 15.03.2009 17:47
Kilyan
mapisend попробуй
http://articles.techrepublic.com.com/5100-10878_11-5033500.html
скачать тут
http://www.dynawell.com/index.php/lang-de/support/resource-kits/40-exchange-reskit/100-e2kreskit
Автор: Kilyan
Дата сообщения: 15.03.2009 18:44
igor_andreev
Примного благодарен - попробую уже только завтра.
в описании - для Microsoft Exchange 2000

Цитата:
The MAPIsend tool (Mapisend.exe) sends messages with optional file attachments through Microsoft Exchange 2000 Server

А если 2003 - работать тож будет, не проверяли?
Автор: Ortios
Дата сообщения: 15.03.2009 18:48
Maza_Faka

Цитата:
но в идеале хотелось бы на vbs/js

А вот как этот код записать чтобы изменить дату и время модификации каталога C:\test,
а не файла test.txt?
Автор: Maza_Faka
Дата сообщения: 16.03.2009 07:34
Ortios

Цитата:
изменить дату и время модификации каталога C:\test

Штатными средствами вроде никак
Автор: rBBWYwg
Дата сообщения: 17.03.2009 17:20
Подскажите, пожалуйста, что надо изменить в коде, или в настройках компьютера (тогда лучше какой ключик прописать в реестр), чтобы при выполнении батника

Код:
@echo off
set DATATIME=%DATE:~-4%.%DATE:~-7,-5%.%DATE:~-10,-8%_%TIME:~0,2%.%TIME:~3,2%
for %%a in ("D:\FOLDER\*.*") do call :add_dir "%%a" "%cd%"
goto :EOF
:add_dir
ren "%~1" "%DATATIME%_%~n1_%~x1"
Автор: shmalex77
Дата сообщения: 17.03.2009 23:51
мудрые подскажите!
в корне диска огромное количество папок и одноименных архивов вперемешку с другими файлами и папками. большинство папок создалось при распаковке через контекстное меню рар архива "извлечь в ......" След-но имя архива и папка совпадает. Мне нужно удалить все папки что имеют оригинал-архив то есть имеет имя такое же как архив присутсвующий на этом разделе.
мне была дана подсказка но я ее не понял либо она не работает
for %a in (*.rar) do rd %~na /s /q
залил куча архивов на сьемный диск распаковал скопом каждый архив в отдельную папку скинул скрипт в test.bat и запустил но вышло
I:\>test.bat
Непредвиденное появление: ~na.
Помогите я не знаю скриптового языка
что надо подправить
спасибо

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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