Pull to refresh
2
0
Send message

С поиском и заменой все понятно, но мне все это неудобно. Если бы мне нужно было прочесать стену текста и сделать там замену обратных слэшей, то я бы конечно так и поступил. В моем случае, проще экранировать.

Да, это не кросс-платформенно, но мне это и не требуется. У меня было много попыток использования как линуксов (самых разных), так и macos и для меня это была сущая пытка. Я с этим завязал) Линукс использую только на серверах.

На практике удобнее экранировать, мне по крайней мере, так как чаще всего я копирую пути. Проще дописать еще один экранирующий обратный слэш, чем стирать существующий обратный слэш и ставить слэш. На одно нажатие кнопки меньше.

Не думаю, что там для Вас будет что-то интересное, так как писалось под себя. Мне к примеру не нужен автозапуск и не нужна оболочка. Со мной путешествует внешний SSD с моими проектами и программами. Ну и пара команд для личного комфорта.

import subprocess
import psutil
import os
import pathlib

print("-------------------------------------------------------------------------")
print("")
print("1 - Запустить все приложения")
print("")
print("2 - Запустить приложения, кроме торрент-клиента")
print("3 - Запустить приложения, кроме приложений на диске А")
print("4 - Запустить приложения, кроме приложений на диске А и торрент-клиента")
print("")
print("5 - Завершить все приложения")
print("")
print("6 - Перезагрузить Проводник")
print("")
print("7 - Выключить компьютер через...")
print("8 - Отменить выключение компьютера")
print("")
print("-------------------------------------------------------------------------")
print("")

choice = input("Выберете пункт меню: ")

print("")
print("-------------------------------------------------------------------------")
print("")

pathToScript = os.path.dirname(__file__)
localAppData = os.getenv('localappdata')

apps = [\
	["ShareX.exe", "Y:\\Programs\\ShareX --- видео и снимки экрана.pyw", "1 2 3 4"], \
	["thunderbird.exe", "Y:\\Programs\\Thunderbird --- почтовый клиент.pyw", "1 2 3 4"], \
	["XYplorer.exe", "Y:\\Programs\\Apps\\XYplorer\\XYplorer.exe", "1 2 3 4"], \
	["RoyalTS.exe", "A:\\Software\\RoyalTS\\RoyalTS.exe", "1 2"], \
	["rutview.exe", "A:\\Software\\RMS\\rutview.exe", "1 2"], \
	["Telegram.exe", "Y:\\Programs\\Apps\\Telegram\\Telegram.exe", "1 2 3"], \
	["Todoist.exe", "Y:\\Programs\\Todoist (Тудуист) --- планировщик задач.pyw", "1 2 3"], \
	["qbittorrent.exe", "Y:\\Programs\\Apps\\qBittorrent\\qbittorrent.exe", "1 3"], \
	["vivaldi.exe", "c:\\Vivaldi\\Application\\vivaldi.exe", "1 2 3 4"], \
	["vivaldi.exe", f"{localAppData}\\Vivaldi\\Application\\vivaldi.exe", "1 2 3 4"], ]

def runApp(x):
	runningApps = []

	for proc in psutil.process_iter():
		runningApps.append(proc.name())
		
	for app in apps:
		i = 0
		if not app[i] in runningApps:
			if app[2].find(x) >= 0 and os.path.exists(app[1]):
				fileExtension = pathlib.Path(app[1]).suffix
				if fileExtension == ".pyw" or fileExtension == ".py":
					subprocess.Popen(["python", app[1]], cwd=os.path.dirname(app[1]))
				else:
					subprocess.Popen(app[1], cwd=os.path.dirname(app[1]))
				i += 1

	subprocess.run('taskkill /IM "explorer.exe" /F')
	subprocess.Popen('C:\\Windows\\explorer.exe')

def taskKill(x):
	subprocess.run(f'taskkill.exe /fi "ImageName eq {x}"', check=True, shell=True)

def taskKillHard(x):
	subprocess.run(f'taskkill.exe /F /fi "ImageName eq {x}"', check=True, shell=True)

match choice:
	case "1":
		runApp("1")

	case "2":
		runApp("2")

	case "3":
		runApp("3")

	case "4":
		runApp("4")

	case "5":
		taskToKill = ["thunderbird.exe", "RoyalTS.exe", "rutview.exe", "winbox.exe", "winbox64.exe", "Telegram.exe", "Todoist.exe", "vivaldi.exe"]

		taskToKillHard =["qbittorrent.exe", "ShareX.exe", "whatsapp.exe", "ktalk.exe", "Pipette.exe", "steamwebhelper.exe", "steam.exe", "LagoFast.exe", "t1client-vc142e.exe", "vhui64.exe"]

		for task in taskToKill:
			taskKill(task)

		for task in taskToKillHard:
			taskKillHard(task)

	case "6":
		subprocess.run('taskkill /IM "explorer.exe" /F')
		subprocess.Popen('C:\\Windows\\explorer.exe')

	case "7":
		shutdownTime = int(input("Через сколько минут выключить компьютер: ")) * 60
		subprocess.run('shutdown /s /t ' + str(shutdownTime), check=True, shell=True)

	case "8":
		subprocess.run('shutdown -a', check=True, shell=True)

	case _:
		print("Такого варианта не существует")

Тоже думал софтину написать на расте поначалу, но, ришел к выводу, что это тупая затея. Каждый раз, когда нужно внести изменения в запуск конкретной программы, нужно перекомпилировать. В итоге, сделал скрипт на питоне с меню, блекджеком и распутными функциями.

Information

Rating
Does not participate
Registered
Activity