Articles of shell

有没有办法使用Perl脚本来更改Windows文件夹图标?

有没有办法使用Perl脚本来更改Windows文件夹图标? 我的意图是将“xxx_documents”文件夹的普通图标更改为其他图标。 我必须以这样的方式来运行脚本,以便照顾整个驱动器。 该驱动器包含许多文件夹。 我必须search名为“文件”(例如“xxx_documents”或简单地“文件”)的每个文件夹,并从"%SystemRoot%\system32\SHELL32.dll"库中将其图标更改为一个。 在Perl中可能吗? 感谢所有帮助我的人。

在explorer-shell-extention中创build一个子菜单?

我创build了一个更改文件名的小脚本(用_replace空格等)。 我用参数来控制这个脚本。 现在我想将其包含到我的资源pipe理器的shell扩展,所以我试图添加以下registry项: HKEY_CLASSES_ROOT\*\shell\edit filname method a\command HKEY_CLASSES_ROOT\*\shell\edit filname method b\command HKEY_CLASSES_ROOT\*\shell\edit filname method c\command 等等。 它工作正常,但我想打包所有这些方法一起进入一个子菜单。 有点像“打开”选项。 那可能吗?

在Windows命令提示符中使用shebang / hashbang

我正在使用服务脚本来在Windows 7上提供Node.js的目录。它在MSYS shell或sh运行良好,因为我已经把node.exe和服务脚本放在了我的〜/ bin中在我的PATH上),而input“serve”是因为它是Shebang ( #! )指令,它告诉shell使用节点运行它。 但是,Windows命令提示符似乎不支持没有* .bat或*。exe扩展名的普通文件,也不支持shebang指令。 是否有任何registry项或其他黑客,我可以强制从内置的cmd.exe这种行为? 我知道我可以写一个简单的batch file来运行它,但是我想知道是否可以在一个内置的fasion中完成,所以我不必为每个脚本写一个脚本? 更新:其实,我在想,是否有可能为所有'找不到的文件'编写一个默认的处理程序,我可以自动尝试在sh -c执行? 谢谢。

我如何逃避一个任意的string作为Windows中的命令行参数?

我有一个string列表,我想在一个Windows命令行调用中将这些string作为parameter passing。 对于简单的字母数字string,只需逐字传递: > script.pl foo bar baz yes no foo bar baz yes no 我明白,如果一个参数包含空格或双引号,我需要反斜杠 – 转义双引号和反斜杠,然后双引号。 > script.pl foo bar baz "\"yes\"\\\"no\"" foo bar baz "yes"\"no" 但是,当我尝试通过字面百分号的参数时,发生这种情况: > script.pl %PATH% C:\Program Files\PHP\;C:\spaceless\perl\bin\;C:\Program Files\IBM\Java60\bin; (…etc.) 双引号不起作用: > script.pl "%PATH%" C:\Program Files\PHP\;C:\spaceless\perl\bin\;C:\Program Files\IBM\Java60\bin; (…etc.) 也不反斜杠(注意输出中反斜杠是如何存在的): > script.pl \%PATH\% \%PATH\% 而且,对于反斜杠转义的反斜线,这些规则是不一致的: > script.pl "\\yes\\" \\yes\ > […]

覆盖shell扩展的拖放

我正在C ++中使用ShellExtension代码。 我正在创build一个虚拟驱动器。 其中代表networking中的某个存储库。 我现在想要的是启用拖放function到这个驱动器。 我想让用户拖动文件到该虚拟驱动器,然后我必须能够抓住该事件,以便我可以执行我的自定义操作。 到目前为止,我无法find任何此类事件或接口。 我尝试使用IDragAndDrop接口,但其rgs文件没有正确注册。 有什么出路吗?

在调用IContextMenu时如何处理重命名操作?

我使用CMF_CANRENAME调用IContextMenu::QueryContextMenu ,在调用Windows XP上的IContextMenu::InvokeCommand时遇到了处理重命名操作的问题。 我不是一个命名空间的扩展,我不使用DefView / IShellView,但我提供了一个实现IServiceProvider的网站。 在较新版本的Windows上,我查询了一个实现了IFolderView2的服务,并且shell调用了IFolderView2::DoRename ,我可以开始重命名操作。 在Windows XP上,但它查询SID_DefView服务,但我找不到有关如何实现该服务的任何信息。 它(SHELL32!CDefFolderMenu :: _ ProcessRename)要求的接口是{985F64F0-D410-4E02-BE22-DA07F2B5C5E1},我可以在registry中看到这是IDefViewFrame3的IID,但它似乎是无证的! 另一方面IDefViewFrame被logging,但是MSDN所说的唯一的事情是“仅用于它的IUnknownfunction,它没有自己的方法”。 在这种情况下是否有文档处理XP的重命名操作? 我真的不想伪造一个IDefViewFrame3接口,但我能想到的唯一的其他select是看它是否是重命名的动词,只是在TrackPopupMenu后自己处理。

如何在默认程序中启动文件,然后在脚本结束时closures文件?

概要 我有wxPython GUI,它允许用户打开文件来查看。 目前我用os.startfile()做到这一点。 不过,我已经知道这不是最好的方法,所以我正在寻求改进。 startfile()的主要缺点是一旦启动文件,就无法控制文件。 这意味着用户可以将文件保留为打开状态,以便其他用户不可用。 我在找什么 在我的GUI中,可以有孩子的窗户。 我通过将GUI对象存储在列表中来跟踪所有这些,然后当父对象closures时,我只是遍历列表并closures所有的子对象。 我想对用户select的任何文件做同样的事情。 我怎样才能启动一个文件,并保留一个python对象,以便我可以closures它的命令? 提前致谢 我的一个解决scheme的梦想 以这样一种方式启动文件,即可以在函数之间传递一个Python对象 以某种方式在默认程序中启动文件并返回PID 一种用文件名检索PID的方法 目前的进展 这是我打算使用的框架。 重要的位是FileThread类的run()和end()函数,因为这是解决scheme将要去的地方。 import wx from wx.lib.scrolledpanel import ScrolledPanel import threading import os class GUI(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, 'Hey, a GUI!', size=(300,300)) self.panel = ScrolledPanel(parent=self, id=-1) self.panel.SetupScrolling() self.Bind(wx.EVT_CLOSE, self.OnClose) self.openFiles = [] self.openBtn = wx.Button(self.panel, -1, […]

一个python脚本激活virtualenv,然后运行另一个python脚本?

在Windows Vista上,我需要一个启动activate (激活virtualenv)脚本的脚本 C:\Users\Admin\Desktop\venv\Scripts\ 然后,在虚拟环境中,启动到文件夹中的manage.py runserver : C:\Users\Admin\Desktop\helloworld\ 我应该怎么做? 我应该使用哪些模块?

以毫秒为单位打印批处理时间

我知道,可以使用@ @echo %time%打印批处理时间达到厘秒。 有没有类似的命令来获得毫秒?

“是”报告错误与subprocess通信()

我正在使用以下函数在Python中运行命令: def run_proc(cmd): child = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = child.communicate() returncode = child.returncode return stdout, stderr, returncode 它一直工作正常,但是现在我试图使用yes程序来pipe道输出到标准input。 我试图运行的命令如下: yes '' | apt-get -y -o Dpkg::Options::="–force-confdef" -o Dpkg::Options::="–force-confold" dist-upgrade 但我相信它可以用一个一般的例子来代替,例如: yes | head -3 | cat 我的问题是,如果我尝试运行任何有yes |命令 在上面的subprocess.Popen将包含错误消息: yes: standard output: Broken pipe yes: write error 对我来说,似乎pipe道仍然有效,从yes | head -3 | […]