<?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; explorer</title>
	<atom:link href="http://paradigm.ru/tag/explorer/feed" rel="self" type="application/rss+xml" />
	<link>http://paradigm.ru</link>
	<description>Блог Александра Мусаева</description>
	<lastBuildDate>Wed, 23 Nov 2011 19:10:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Расширяем возможности контекстного меню Explorer</title>
		<link>http://paradigm.ru/explorer-context-menu</link>
		<comments>http://paradigm.ru/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>

<p><pre><code>Windows Registry Editor Version 5.00</p>

<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_root]
@="Open console here"</p>

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

<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_root]
@="Open console here"</p>

<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_root\command]
@="Cmd.exe /k pushd \"%L\""</code></pre></p>

<p>Альтернативный вариант для открытия консоли с&nbsp;правами администратора (может быть полезен, если ваш действующий пользовательский профиль этими правами обделен):</p>

<p><pre><code>Windows Registry Editor Version 5.00</p>

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

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

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

<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_root\command]
@="runas /user:<strong>COMPUTER_NAME</strong>&#92;<strong>AdministratorName</strong> \"Cmd.exe /k pushd %L\""</code></pre></p>

<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>

<p><pre><code>Windows Registry Editor Version 5.00</p>

<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_tmp]
@="Create temp directory"</p>

<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmd_tmp\command]
@="d:&#92;serv&#92;python25&#92;pythonw.exe d:&#92;pro&#92;mkdir.py \"%L\""</p>

<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_tmp]
@="Create temp directory"</p>

<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\cmd_tmp\command]
@="d:&#92;path&#92;python25&#92;pythonw.exe d:&#92;path&#92;mkdir.py \"%L\""</code></pre></p>

<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>

<p><pre><code class="python">from sys import argv, exit
from os import mkdir, path
from time import strftime</p>

<p>try:
    dir_path = argv[1]
except:
    dir_path = "."</p>

<p>i = 0</p>

<p>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()</p>

<p>mkdir(dir_name)</code></pre></p>

<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/explorer-context-menu/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

