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

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


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

Wu-Tang:

И уже сразу не пашет!
И не должна:
Пишу:
C:Cd C:\PROGRA~1\GVOZDS~1\NEWMAI~1C:\"Program Files"\"GvozdSoft"\"New Mail Informer"\"New Mail Informer.exe"
Третья строка должна быть:

start C:\"Program Files"\"GvozdSoft"\"New Mail Informer"\"New Mail Informer.exe"

У тебя нехватало слова start. Кавычки вокруг Gwozdsoft, поскольку в этом имени нет пробелов, необязательны, но их наличие не мешает.

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

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

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

WuTang:

Я проверил запуск на той проге что ты прекрепил, и выявил три способа, которые 100% Работают (кстате батник тестировал с разных дисков, сначало с C:\, затем и с другого диска):

start c:\progra~1\GvozdSoft\NewMai~1\newmai~1.exestart C:\"Program Files"\GvozdSoft\"New Mail Informer"\"New Mail Informer.exe"start %systemdrive%\progra~1\GvozdSoft\NewMai~1\newmai~1.exe

И не надо никаких c: или cd /d, эти команды и так работают.

З.Ы:

Последним вариантом можно воспользоваться для того, если допустим ты захочешь переустановить винду, и поставить её на другой диск, скажем на D:\, то этот батник будет запускать эту прогу (после её установки) в не зависимости от буквы диска. Т.е, переменная %systemroot%, определяет системный диск, и не важно какая у него буква.

З.З.Ы:

А что ты имеешь ввиду не пашет, просто не запускается, или запускается какое то сообщение? :(

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

Тролль:

Третья строка должна быть:

start C:\"Program Files"\"GvozdSoft"\"New Mail Informer"\"New Mail Informer.exe"

У тебя нехватало слова start. Кавычки вокруг Gwozdsoft, поскольку в этом имени нет пробелов, необязательны, но их наличие не мешает.

Все сделал и все-равно выдает ошибку, что не может найти!

CreatoR:

start c:\progra~1\GvozdSoft\NewMai~1\newmai~1.exe

Ошибка run time 53.

start C:\"Program Files"\GvozdSoft\"New Mail Informer"\"New Mail Informer.exe"

Не может найти!

start %systemdrive%\progra~1\GvozdSoft\NewMai~1\newmai~1.exe

Ошибка run time 53.

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

Либо ошибка, либо не может найти!

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

Wu-Tang:

CreatoR:

Код:

start %systemdrive%\progra~1\GvozdSoft\NewMai~1\newmai~1.exe

Ошибка run time 53.

Либо ошибка, либо не может найти!

Значит так, для того чтобы запустить прогу, у которой есть связные файлы (библиотеки dll и т.п), действительно нужно перед запуском проги, задать рабочею папку. Поэтому, возьми тот вариант у которого выдаётся сообщение run time 53, и в строчке перед ним, напиши команду cd /d <Путь к рабочей папке>

Т.е, в результате, должно получится вот так:

cd /d %systemdrive%\progra~1\GvozdSoft\NewMai~1start newmai~1.exe

З.Ы:

И также все остальные проги, которые требуют запуск связных файлов!

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

CreatoR:

cd /d %systemdrive%\progra~1\GvozdSoft\NewMai~1start newmai~1.exe

Все ок!

А чем оличается:

C:Cd C:\PROGRA~1\GVOZDS~1\NEWMAI~1start C:\PROGRA~1\GVOZDS~1\NEWMAI~1\Newmai~1.exe

От:

cd /d %systemdrive%\progra~1\GvozdSoft\NewMai~1start newmai~1.exe

Что значит /d?

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

Wu-Tang:

Что значит /d?

Параметр /D используется для одновременной смены текущего диска и каталога. Т.е, при команде cd /d, не важно где будет находиться батник (на каком диске и в какой папке), каталог последующего пути после этой команды, станет рабочим каталогом - Как будто бы батник находился в этом каталоге, и запускал бы прогу не с командой cd /d, a просто со start.

З.Ы:

Тролль:

Хочю спросить, вот в описании команды CD (по вводу cd /? в командной строке), есть одно объяснение (см. стрелку на прек. изображении), которое мне не совсем понятно. -Как включается эта расширенная обработка? :bye1:

cmd.jpg

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

CreatoR:

У меня сейчас:

C:Cd C:\PROGRA~1\GVOZDS~1\NEWMAI~1start C:\PROGRA~1\GVOZDS~1\NEWMAI~1\Newmai~1.exe

И я батник перемещал и все нормально! :bye1:

А можно и:

cd /d %systemdrive%\progra~1\GvozdSoft\NewMai~1start newmai~1.exe

Как ты говорил.

Так в чем разница?

И что лучше?

И можно ли обойтись без коротких имен?

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

Так в чем разница?

И что лучше?

И можно ли обойтись без коротких имен?

Wu-Tang:

Разница в том, что в первом примере, в его первой строке, там где символы C:, определяется рабочий диск. А во второй строке, задан полный путь к каталогу, ну а в третей, задаётся команда для запуска проги, хотя в третьей строке можно обойтись без полного пути к екзешнику, ведь полный путь к нему, уже был задан командой с предыдущей строки (cd c:\progra~1\GvozdSoft\NewMai~1).

А во втором примере, вместо прописывания первой строки с символами C:, эта строка убирается, и её заменяет параметр /d после команды CD, который, как я уже писал ранее, задаёт рабочй диск, и путь к рабочему каталогу одновременно, что позволяет обойтись без первой строки (как в первом примере в твоих цитатах), и без надобности указывать полный путь к запускаемому файлу в той команде, которая его и запускает!

P.S:

Не знаю, какая тебе разница как он будет запускаться, главное ведь что он запускается. Но всё же, вот как можно без сокращении (по мере возможного), и ИМХО, это самый оптимальный вариант:

cd /d "%systemdrive%\program files\GvozdSoft\New Mail Informer"start newmai~1.exe

-Если хочешь, то переменную %systemdrive% можешь заменить на C:, или на тот диск, на котором и нужно запускать твою прогу!

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

CreatoR:

В принципе более менее теперь понятно.

Что самое странное, что остальные проги запускаются по такой команде:

start C:\"Program Files"\DrWU\drwu.exe 

И без всяких переходов и т.д. :thank1:

Неплохо бы, если Тролль еще заглянул!

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

Wu-Tang:

Неплохо бы, если Тролль еще заглянул!
Угу, и еще чтобы что-нибудь булькающее захватил... :bye1:

Некоторым программам для работы нужен переход в их каталог, поэтому есть и соответствующая строчка в свойствах ярлыка. В батнике надо делать это соответствующей командой cd /d ... или C: и потом cd

Так что с cd все нормально, хоть и довольно редко, но это бывает нужно. А вот почему у тебя не работают длинные имена в команде start, это непонятно. Когда я расписывал изменения батника по пунктам, я предполагал, что ты будешь менять строку за строкой в работавшем до этого батнике с короткими именами. Ты хочешь сказать, что после первого же изменения в батнике он перестает работать? Windows - XP? Если из линейки 98-й, то могут быть некоторые изменения в синтаксисе.

Имена в пути совпадают с именами в батнике, ты их не менял при установке New Mail Informer?

Я сейчас попробовал поставить эту программу у себя. Батник из трех строк (пишу на случай, если при малой ширине экрана строки будут автоматически перенесены)

C:Cd C:\Program Files\GvozdSoft\New Mail Informerstart C:\"Program Files"\GvozdSoft\"New Mail Informer"\"New mail Informer.exe"

работает безупречно. Попробуй его просто скопировать с этой страницы в файл и запустить.

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

Тролль:

C:Cd C:\Program Files\GvozdSoft\New Mail Informerstart C:\"Program Files"\GvozdSoft\"New Mail Informer"\"New mail Informer.exe"

работает безупречно. Попробуй его просто скопировать с этой страницы в файл и запустить.

У меня тоже не работает так :bye1:

З.Ы:

А на счёт моего вопроса с позапрошлого поста, ты не в курсе? -Цитирую себя:

Тролль:

Хочю спросить, вот в описании команды CD (по вводу cd /? в командной строке), есть одно объяснение (см. стрелку на прек. изображении), которое мне не совсем понятно. -Как включается эта расширенная обработка?

cmd.jpg

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

CreatoR

Расширенная обработка немного изменяет синтаксис команд (например, делает в команде cd необязательным заключение пути в кавычки), но по умолчанию она в Windows включена. Мой батник был рассчитан на то, что она включена, но сделать его работающим и при ее отключении - пара пустяков (точнее, пара кавычек). Для этого надо вторую команду у меня в батнике записать как

Cd "C:\Program Files\GvozdSoft\New Mail Informer"

Может быть, она у тебя каким-то образом была отключена?

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

На всякий случай прикладываю в архиве два батника: exton.bat ее включает, extoff.bat - отключает.

P.S. А заодно включил в архив и свой батник в готовом виде (Informer.bat).

ext.zip

ext.zip

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

Тролль:

Ты хочешь сказать, что после первого же изменения в батнике он перестает работать? Windows - XP?

Да перестает! ХР...

Имена в пути совпадают с именами в батнике, ты их не менял при установке New Mail Informer?

Нет конечно!

C:Cd C:\Program Files\GvozdSoft\New Mail Informerstart C:\"Program Files"\GvozdSoft\"New Mail Informer"\"New mail Informer.exe"

работает безупречно. Попробуй его просто скопировать с этой страницы в файл и запустить.

Так и сделал, но пишет, что не может найти!

Чудеса блин.

Расширенная обработка немного изменяет синтаксис команд (например, делает в команде cd необязательным заключение пути в кавычки), но по умолчанию она в Windows включена. Мой батник был рассчитан на то, что она включена, но сделать его работающим и при ее отключении - пара пустяков (точнее, пара кавычек). Для этого надо вторую команду у меня в батнике записать как

Cd "C:\Program Files\GvozdSoft\New Mail Informer"

Может быть, она у тебя каким-то образом была отключена?

Все - равно не работает!

И твой приложенный тоже!

Говорю же чудеса!

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

Тролль:

Что то я совсем запутался :D - Почему вот так:

Cd /d "C:\Program Files\GvozdSoft\New Mail Informer"

start "New Mail Informer.exe"

Не запускается?

А вот так:

Cd /d "C:\Program Files\GvozdSoft\New Mail Informer"

start "C:\Program Files\GvozdSoft\New Mail Informer\New Mail Informer.exe"

Запускается :D хм... :D

И ещё, без кавычек у меня не работает, даже после включения обработки этой команды (тем батником что ты дал - exton.bat)... :g:

Wu-Tang:

Все - равно не работает!

И твой приложенный тоже!

Как не работает, тот что троль приложил очень даже работает! можешь выложить скрин сообщения, которое выскакивает (о том что не может найти)?

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

Wu-Tang:

Все - равно не работает!

И твой приложенный тоже!

Как не работает, тот что троль приложил очень даже работает! можешь выложить скрин сообщения, которое выскакивает (о том что не может найти)?

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

Wu-Tang:

Проверь правильность путей, т.к другой проблемы я не вижу. Согласись, если у меня работает (только что проверил), и у Тролля работает, значит проблема где-то у тебя... :D

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

CreatoR

Почему вот так:

Cd /d "C:\Program Files\GvozdSoft\New Mail Informer"

start "New Mail Informer.exe"

Не запускается? А вот так:

Cd /d "C:\Program Files\GvozdSoft\New Mail Informer"

start "C:\Program Files\GvozdSoft\New Mail Informer\New Mail Informer.exe"

Запускается

Как я понимаю, в этом случае команда start путается, поскольку если первым параметром указывается строка в кавычках, она может восприниматься и не как имя программы. Почему, если эта строка представляет собой полный путь, команда разбирается, а если короткий - нет, видимо, просто заложено разработчиком команды start - если строка в кавычках представляет собой полный путь, трактовать ее как вызов программы, а если нет - трактовать как параметр другого назначения (разбирать, что это за параметр, не буду, чтобы все окончательно не запутать, но в помощи к команде он упоминается). У меня тоже твой первый вариант не работает, но если изменить в нем последнюю строку на start NewMai~1, то работает.

Может быть, то, что у Wu-Tanga команда start вообще не работает с длинными именами в строке, объясняется этим же? С короткими именами у Wu-Tanga все работает, а с именами в кавычках в командах возникают двусмысленности, но почему наши Windows разбираются с ними по-разному, неясно. У меня Windows XP SP2 со всеми обновлениями, может быть, это влияет? Похоже, что без экспериментов с другими экземплярами Windows разобраться не получится.

Во всяком случае, с короткими именами, когда двусмысленности исключены, все работает у всех.

У меня, кстати, New Mail Informer запускается даже с помощью только лишь одной команды в пакетном файле, без всяких C: и cd ..., правда, довольно длинной:

start /D C:\"Program Files"\GvozdSoft\"New Mail Informer" C:\"Program Files"\GvozdSoft\"New Mail Informer"\"New Mail Informer.exe"

(это все одна строка, и больше в батнике ничего нет). Для пояснения, параметр после ключа /D в команде start задает рабочий каталог.

Wu-Tang и CreatoR , попробуйте, может, и у вас сработает? :D

P.S.

Wu-Tang

У меня такое сообщение выскакивает, когда какой-нибудь ляп в написании пути, например, буква C русская. Попробуй написать этот путь заново.

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

Тролль:

Wu-Tang и CreatoR , попробуйте, может, и у вас сработает? :g:

Попробовал, сработало, и вот так ещё сработало:

start /d C:\"Program Files"\GvozdSoft\"New Mail Informer" NewMai~1.exe

З.Ы:

Помнится, ещё до начала возни с батником для оперы, мы обсуждали вопрос переменных. Так вот, а может возобновим этот вопрос? :blush2:

Где то начиная с Этого поста, я начел этот вопрос. А вот цитата (с чуть поздних постов чем указаны в ссылке) которая его подчёркивает:

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

А затем, можно будет добовлять команды, которые будут выполняться как будто батник был запущен с той папки (где он и лежит), и управление (рабочая папка) осталось бы в той же папке (но при этом не зависил от буквы диска) - И даже после переустановки системы, и/или после перемещения той самой папки на другой диск, после запуска данного батника, переменная будет установлена для той папки где он и находится (без надобности редактировать батник каждый раз при перемещение папки в другой диск)

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

CreatoR:

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

А при использовании переменных окружения существует одно ограничение, так сказать, дыра в возможностях доступа к установленной переменной.

Дело в том, что окружение создается по данным реестра при старте Windows (точнее, старте Explorer), а при запуске командного процессора ему передается временная копия окружения, и он работает только с ней. После того, как он закончит работу, эта копия уничтожается. То есть установка переменных окружения по SET действует только, пока работает вызов командного процессора, который ее установил, то есть до конца пакетного файла.

Можно установить переменную прямо в реестр, используя команду REG ADD, но она не будет видима командному процессору до перезапуска Explorer, то есть практически до рестарта Windows.

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

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

Тролль:

Может быть, то, что у Wu-Tanga команда start вообще не работает с длинными именами в строке, объясняется этим же? С короткими именами у Wu-Tanga все работает, а с именами в кавычках в командах возникают двусмысленности, но почему наши Windows разбираются с ними по-разному, неясно.

Работает с длинными, правда если слова состоят не из 3, а из 2 слов, я это проверил, а вот с этой прогой косяк вот такой!

start /D C:\"Program Files"\GvozdSoft\"New Mail Informer" C:\"Program Files"\GvozdSoft\"New Mail Informer"\"New Mail Informer.exe"

Не работает! :bye1:

P.S.

Wu-Tang

У меня такое сообщение выскакивает, когда какой-нибудь ляп в написании пути, например, буква C русская. Попробуй написать этот путь заново.

Так я даже не писал вручную, а просто копировал отсюда!

А вот Creatora:

start /d C:\"Program Files"\GvozdSoft\"New Mail Informer" NewMai~1.exe

Работает!

У меня Windows XP SP2 со всеми обновлениями

Тоже, но без обновлений!

Так что черт ее знает эту программу, у всех все по-разному! Анекдот! :bye1:

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

Тролль:

Ты меня не совсем правильно понял (скорее это я не правильно объяснился :doh: ):

Связи с батником для оперы, у вопроса про переменные, нету никакой. Просто ещё в тех постах, я хотел 'Съесть' всё сразу, но не понимал, что 'пережувать' всё сразу не смогу.

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

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

CreatoR:

Родительский каталог - это тот, в котором батник, или на этаж выше? В общем, неважно. Команды, определяющей, в каком каталоге находится батник, нет. Но, как всегда, для конкретной задачи можно попробовать выкрутиться. Правда, как всегда, когда выкручиваешься, трудно указать универсальный способ для всех случаев.

Во-первых, есть команда cd, которая выдает текущий каталог. Если батник, например, запускался ярлыком, то тот установил ему по умолчанию текущий каталог, в котором находится этот батник. Соответственно cd выдаст путь к этому каталогу. Затем, как обычно, помещаем этот путь в файл, сливаем его с файлом с командой reg для прописывания этого пути в реестре и запускаем получившийся пакетный файл.

Можно еще вместо команды cd использовать строку, с помощью которой запускался батник, в ней тоже есть информация о том, где находится батник. Строка вызова собственно батника (без параметров и ключей, передаваемых батнику в командной строке вслед за вызовом файла батника), известна батнику под именем %0 , то есть если ты дашь в батнике команду echo %0 , то она напечатает тебе команду, вызвавшую батник (без параметров, которые могли быть записаны в этой строке дальше).

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

Тролль:

Родительский каталог - это тот, в котором батник, или на этаж выше?

Это то в котором батник!

Затем, как обычно, помещаем этот путь в файл

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

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

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

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



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