<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Paradigm.ru &#187; консоль</title>
	<atom:link href="http://paradigm.ru/tag/%d0%ba%d0%be%d0%bd%d1%81%d0%be%d0%bb%d1%8c/feed" rel="self" type="application/rss+xml" />
	<link>http://paradigm.ru</link>
	<description>Блог Александра Мусаева</description>
	<lastBuildDate>Sat, 08 May 2010 16:13:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Расширяем возможности контекстного меню Explorer</title>
		<link>http://paradigm.ru/2008/04/explorer-context-menu</link>
		<comments>http://paradigm.ru/2008/04/explorer-context-menu#comments</comments>
		<pubDate>Tue, 29 Apr 2008 09:23:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Программы]]></category>
		<category><![CDATA[explorer]]></category>
		<category><![CDATA[консоль]]></category>
		<category><![CDATA[контекстное меню]]></category>
		<category><![CDATA[реестр]]></category>

		<guid isPermaLink="false">http://paradigm.ru/?p=290</guid>
		<description><![CDATA[Возможность добавить в&#160;контекстное меню Windows Explorer пункт &#171;Open console here&#187; давно не&#160;была новостью. Но&#160;необходимость в&#160;ее&#160;использовании всерьёз возникла только недавно. Когда приходится по&#160;десять раз в&#160;день открывать консоль и&#160;нудную писать команду перевода текущей директории из&#160;этого ужасного &#171;C:\Documents and Settings\&#8230;&#187; куда надо, поневоле задумаешься о&#160;том, как упростить процесс. А&#160;упростить его не&#160;сложно. Если добавить в&#160;реестр перечисленные ниже ключи, в&#160;контекстном [...]]]></description>
			<content:encoded><![CDATA[<p>Возможность добавить в&nbsp;контекстное меню Windows Explorer пункт &laquo;Open console here&raquo; давно не&nbsp;была новостью. Но&nbsp;необходимость в&nbsp;ее&nbsp;использовании всерьёз возникла только недавно. Когда приходится по&nbsp;десять раз в&nbsp;день открывать консоль и&nbsp;нудную писать команду перевода текущей директории из&nbsp;этого ужасного &laquo;<code>C:\Documents and Settings\&#8230;</code>&raquo; куда надо, поневоле задумаешься о&nbsp;том, как упростить процесс.</p>
<p>А&nbsp;упростить его не&nbsp;сложно. Если добавить в&nbsp;реестр перечисленные ниже ключи, в&nbsp;контекстном меню появится новый пункт для открытия консольного окна в&nbsp;выбранной директории:</p>
<pre><code>Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_root]
@="Open console here"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_root\command]
@="Cmd.exe /k pushd \"%L\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_root]
@="Open console here"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_root\command]
@="Cmd.exe /k pushd \"%L\""</code></pre>
<p>Альтернативный вариант для открытия консоли с&nbsp;правами администратора (может быть полезен, если ваш действующий пользовательский профиль этими правами обделен):</p>
<pre><code>Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_root]
@="Open root console here"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_root\command]
@="runas /user:<strong>COMPUTER_NAME</strong>\\<strong>AdministratorName</strong> \"Cmd.exe /k pushd %L\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_root]
@="Open root console here"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_root\command]
@="runas /user:<strong>COMPUTER_NAME</strong>\\<strong>AdministratorName</strong> \"Cmd.exe /k pushd %L\""</code></pre>
<p>COMPUTER_NAME и&nbsp;AdministratorName, как не&nbsp;сложно догадаться, заменяются на&nbsp;имя машины и&nbsp;администратора соответственно. Пароль будет запрашиваться при открытии административной консоли.</p>
<p>Если лень возиться с&nbsp;реестром, можно воспользоваться программой из&nbsp;комплекта <a href="http://b23.ru/pyq">Microsoft PowerToys</a>. Понадобится та,&nbsp;что называется &laquo;Open Command Window Here&raquo;. Но&nbsp;на&nbsp;мой взгляд, скопировать ключи в&nbsp;.reg файл и&nbsp;импортировать в&nbsp;реестр проще, чем искать для этого специальную утилиту.</p>
<p>Пока я&nbsp;искал гуглом приведенные выше ключи реестра, пришла мысль об&nbsp;автоматизации еще одного рутинного действия. Время от&nbsp;времени, для сортировки файлов я&nbsp;часто использую директории с&nbsp;именами в&nbsp;формате <code>YYYYMMDD-desc</code> (<code>YYYYMMDD</code>&nbsp;&#8212; текущая дата, <code>desc</code>&nbsp;&#8212; описание). По&nbsp;такому принципу, например, организуются черновики постов для блога, архивы документов, скачанные файлы, которые нужно разобрать и&nbsp;много еще чего.</p>
<p>Для генерации таких директорий я&nbsp;добавил еще один пункт в&nbsp;контекстное меню. В&nbsp;отличии от&nbsp;первого примера, здесь запускается небольшой скрипт на&nbsp;python, который, собственно, директорию и&nbsp;создает (скрипт приведен ниже).</p>
<pre><code>Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_tmp]
@="Create temp directory"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_tmp\command]
@="d:\\serv\\python25\\pythonw.exe d:\\pro\\mkdir.py \"%L\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_tmp]
@="Create temp directory"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_tmp\command]
@="d:\\path\\python25\\pythonw.exe d:\\path\\mkdir.py \"%L\""</code></pre>
<p>Перед импортированием в&nbsp;реестр, понадобится заменить путь к&nbsp;скрипту <code>mkdir.py</code> и&nbsp;интерпретатору <code>pythonw</code> на&nbsp;реальные значения.</p>
<p>Вполне возможно, что генерировать date-based folder names можно и&nbsp;без питона, ограничившись командами консольного интерпретатора. Но,&nbsp;во-первых, на&nbsp;момент написания скрипта, я&nbsp;не&nbsp;знал, как это делается, во-вторых, скрипт при каждом вызове может генерировать новую директорию, добавляя к&nbsp;дате дополнительный числовой индекс (при повторном вызове, индекс инкрементируется). В&nbsp;том, что последнюю деталь можно реализовать в&nbsp;bat-файле я&nbsp;сомневаюсь.</p>
<pre><code class="python">from sys import argv, exit
from os import mkdir, path
from time import strftime

try:
    dir_path = argv[1]
except:
    dir_path = "."

i = 0

while i &lt; 10000:
    dir_name = dir_path + "/%s-%03d" % (strftime("%Y%m%d"), i)
    if not path.isdir(dir_name):
        break
    i += 1
else:
    exit()

mkdir(dir_name)</code></pre>
<p>На&nbsp;всякий случай в&nbsp;скрипте сделано ограничение на&nbsp;максимальное количество директорий. Если у&nbsp;кого-то есть конструктивные комментарии относительно улучшения кода&nbsp;&#8212; с&nbsp;интересом выслушаю, т.к. на&nbsp;питоне начал писать совсем недавно.</p>
<p>Да,&nbsp;и&nbsp;еще одна деталь. Все описанные выше модификации реестра проверены на&nbsp;Windows XP.&nbsp;Будет&nbsp;ли это работать на&nbsp;Висте мне не&nbsp;известно. Предполагаю, что будет.</p>
<p>Все примеры из&nbsp;поста можно скачать в&nbsp;одном архиве: <a href="http://things.paradigm.ru/explorer-console-menu-ext.zip">explorer-console-menu-ext.zip</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://paradigm.ru/2008/04/explorer-context-menu/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->