1
目 標 場 景
用過 Mac OS 的朋友應該都遇到過,日常的文件操作會在同級目錄下產生一些特定的臨時文件。
平常將文件夾打包成壓縮包或拷貝文件夾到移動硬盤內,臨時文件會包含在里面,如果是程序源代碼,在 Windows 系統下編譯有時候還會受到影響。
本篇文章的目的是在移動硬盤插入到電腦的同時,利用 **Python 自動化和 Windows 服務 **刪除掉這些臨時文件。
2
編 寫 代 碼
首先,我們需要循環檢測 PC 的驅動器,判斷是否存在 可移動的磁盤 。
# 循環遍歷,對每一個驅動器進行判斷
while True:
for item in disk_partitions():
if 'removable' in item.opts:
driver, opts = item.device, item.opts
# 刪除臨時文件
pass
break
else:
continue
# 休眠5s,繼續遍歷
sleep(5)
如果檢測到存在可移動的磁盤,就遍歷文件,刪除 Mac 臨時文件。
def remove_all_file(filepath, file_name):
"""
刪除 MAC 臨時文件
:param file_name:
:return:
"""
for root, dirs, files in os.walk(filepath):
for name in files:
print(name)
if name.startswith("._") or name == file_name:
os.remove(os.path.join(root, name))
接著,我們利用 pyinstaller 將 Python 文件打包成 Exe 可執行文件。
# 安裝 pyinstaller
pip3 install pyinstaller
# 把 py 文件打包成 exe 可執行文件
# 圖標:img.ico
pyinstaller -F -i img.ico del_mac_files.py
為了保證程序一直在后臺運行,我們需要創建一個 系統服務 ,讓將可執行文件一直在后臺執行。
instsrv.exe 和 srvany.exe 這兩個文件可以非常方便的創建系統服務。其中,instsrv.exe 用于創建、刪除服務;srvany.exe 用于保障服務能正常啟動。
# 注冊服務
# instsrv.exe 服務名 srvany.exe
c:instsrv.exe del_mac_tempfile c:srvany.exe
需要注意的是,運行注冊服務命令時, 需要以管理員權限運行 CMD 來執行 。
注冊完服務之后,還需要通過注冊表把服務和可執行程序關聯起來。
# 注冊表服務的目錄
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
在注冊表中找到上面創建的服務 ,新建一個 Parameters 的項,在項內再創建兩個字符串,分別指向可執行文件和可執行文件的完整目錄。
最后,services.msc 命令打開服務管理,找到目標服務, 設置允許服務和桌面交互 ,設置開啟服務并設置為自啟。
3
結 果 結 論
通過以上注冊的服務,每次插入移動硬盤,都會自動去遍歷移動硬盤盤的文件,查找 Mac 臨時文件并刪除。
-
硬盤
+關注
關注
3文章
1315瀏覽量
57406 -
WINDOWS
+關注
關注
4文章
3556瀏覽量
89061 -
自動化
+關注
關注
29文章
5613瀏覽量
79498 -
python
+關注
關注
56文章
4804瀏覽量
84915
發布評論請先 登錄
相關推薦
評論