bat比较有意思的代码_利用键盘快捷键新建文件(思路 + 代码)

d97f950412ea6ad76f97e51c0ce5c664.gif

因为经常需要写一些笔记, 所以常会新建一个文本文件或则代码文件.

未优化的步骤是:

初始状态: 双手在键盘, 此时想新建一个文件

1. 右手移动到鼠标处

2. 点击一下鼠标右键

3. 往下找到新建

4. 再找到次级菜单,文本文件

5. 右手再移回键盘

6. 重命名文件

一共有6步, 太繁琐了......

根据网上找到的教程, 我们改一下注册表, 新建文本文件的快捷键,可以优化部分操作

1. 右手移动到鼠标处

2. 按wt, 创建文本文件

3. 右手再移回键盘

4. 重命名文件

现在这样优化到了四个步骤, 但还是伴随着两个缺陷:

- 右手还是要移动到鼠标处(这个动作就让人感觉很不自然)

- 新建的只是txt文件, 最后一个重命名文件是无法避免的

嗯嗯, 还是感觉优化之后的步骤不满意. 我想要直接脱离鼠标, 直接使用键盘就可以完成这些操作. 不是感觉很美妙? 嗯嗯, 那思考一下我的需求:

1. 通过快捷键触发,直接新建文件

2. 重命名文件未我想要的

没错, 这个就是我想要的.

好, 接下来该怎么写这个程序呢? 程序应该是可以响应键盘的快捷键的, 也就是说有个死循环不断检测。。。。。这个就不太好了, 我每次还要把这个程序放在后台嘛~~~.

经过一系列的乱七八糟的想法之后, 最后决定这样做:

运行环境:

- window10

- python listary bat

流程就是, 通过listary来调用bat,bat来调用python.

嗯嗯, 好像比较合理.

程序应该是比较简单的. 好, 可以开始写了....

卧槽, 好像有点麻烦, 我怎么知道我要在哪里创建我的文件,我要捕获这个活动的窗口吧?

但是我在调用bat或则py的时候会有一个cmd窗口, 获取的窗口是这个cmd窗口吧.

那我可不可以获取Windows的窗口栈呢, 取倒数第二个, 不就是活动窗口嘛?

就和按Alt + Tab 键时一样的道理.... 嗯嗯, 想法很好, 但是Windows好像没有找到这个API,

怎么办?....

有了, 如果我要新建文件, 我的鼠标是移动到这个文本文件所有的文件浏览器上的, 我只要获取了

文件浏览器的caption就可以获取地址了.

所以 获取鼠标位置-> 获取窗口-> 获取caption

OK, 完美.

windows刚开始学习, 不是很熟悉, 刚好最近python缺练手的, 那就选python来解决这个需求了.

# -*- coding=utf-8 -*-

import win32gui
import win32com
import win32process
import win32api
import win32con
import os
import random

#=============================================
# 此程序用于在当前目录下创建一个文件
# 需要注意的是: 当前目录指的的光标所在的目录
#=============================================
hwnd = win32gui.WindowFromPoint(win32api.GetCursorPos())
cmdHwnd = None

# 如果获取的是命令行窗口, 则将该命令行窗口隐藏
SW_SHOW = 1 # 正常显示
SW_SHOWMAXIMIZED = 3 # 最大化显示, 并激活窗口
SW_MINIMIZE = 6 # 最小化显示窗口
if (win32gui.GetClassName(hwnd) == 'ConsoleWindowClass'):
	print "222"
	cmdHwnd = hwnd
	win32gui.ShowWindow(cmdHwnd, SW_MINIMIZE)
	hwnd = win32gui.WindowFromPoint(win32api.GetCursorPos()) # 重新获取一个

path = ""
while win32gui.GetParent(hwnd)!=0:
	hwnd = win32gui.GetParent((hwnd))

def get_desktop():
	key =win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,r'SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders',0,win32con.KEY_READ)
	return win32api.RegQueryValueEx(key,'Desktop')[0]

if win32gui.GetClassName(hwnd) == 'CabinetWClass':
	path = win32gui.GetWindowText(hwnd)
	print "found root windows...can create file..."
	print "path: " + path
elif win32gui.GetClassName(hwnd) == 'Progman':
	print "click destop"
	path = get_desktop()
else:
	print win32gui.GetClassName(hwnd)
	path = win32gui.GetWindowText(hwnd)
	print "path: " + path
	print "not found windows!"
	exit(1)

# 读取用户行为
filename = path + "/test.txt"
print filename
if cmdHwnd:
	print "111"
	win32gui.ShowWindow(cmdHwnd, SW_SHOW) # 需要读取用户输入的时候, 再将命令行显示出来

sname = raw_input("请输入文件全名:")
print "log: " + sname
if sname != None and len(sname) != 0:
	filename = path + "/" + sname

# 检测是否合法
while os.path.exists(filename):
	prename = sname.split(".")
	if len(prename)!=2 and len(prename[0]) != 0:
		print "文件名不合法, 有多个.符号"
		exit(1)
	prename = prename[0]
	filename = path + "/" + prename + str(random.randint(0,1000)) + ".txt"

#
if not os.path.exists(filename):
	with open(filename,'w'):pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值