Как переименовать имена файлов, чтобы избежать конфликтов в Windows или Mac?

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

Пример:

Ctrl + 1 переключается на Desktop1 Ctrl + 2 переключается на рабочий стол2. Когда Hedgeward работает на Desktop1 (не в полноэкранном режиме), я нажимаю клавиатуру для переключения на Desktop2 и перемещаю курсор в место вне игры. После этого я вернусь к Desktop1, в котором я могу свести к минимуму игру, открыть другие окна и т. Д.

Другие ярлыки, которые я тестировал:

Ctrl + 1 переключатели to Desktop1 Ctrl + F2: выполнить команду

Следует отметить, что она работает только с не полноэкранными приложениями.

1
задан 27 September 2016 в 12:34

1 ответ

Рекурсивно заменить список строк или символов в именах файлов другими строками или символами

. Сценарий ниже может использоваться для замены списка строк или символов, возможно, встречающихся в имени файла, произвольным замена на строку. Поскольку сценарий только переименовывает сам файл (а не путь), нет никакого риска возиться с каталогами.

Замена определена в списке: chars (см. Ниже). Можно дать каждой строке свою собственную замену, чтобы иметь возможность отменить переименование, если вы когда-нибудь захотите это сделать. (предполагая, что замена является уникальной строкой). Если вы хотите заменить все проблемные строки на символ подчеркивания, просто определите список, например:

chars = [
    ("<", "_"),
    (">", "_"),
    (":", "_"),
    ('"', "_"),
    ("/", "_"),
    ("\\", "_"),
    ("|", "_"),
    ("?", "_"),
    ("*", "_"),
    ]

Dupes

Чтобы предотвратить дублирование имен, скрипт сначала создает " новое имя. Затем он проверяет, существует ли аналогичный файл уже в одном каталоге. Если это так, оно создает новое имя, которому предшествуют dupe_1 или dupe_2, пока не найдет «доступное» новое имя для файла:

становится:

Сценарий

#!/usr/bin/env python3
import os
import shutil
import sys

directory = sys.argv[1]

# --- set replacement below in the format ("<string>", "<replacement>") as below
chars = [
    ("<", "_"),
    (">", "_"),
    (":", "_"),
    ('"', "_"),
    ("/", "_"),
    ("\\", "_"),
    ("|", "_"),
    ("?", "_"),
    ("*", "_"),
    ]
# ---

for root, dirs, files in os.walk(directory):
    for file in files:
        newfile = file
        for c in chars:
            newfile = newfile.replace(c[0], c[1])
        if newfile != file:
            tempname = newfile; n = 0
            while os.path.exists(root+"/"+newfile):
                n = n+1; newfile = "dupe_"+str(n)+"_"+tempname
            shutil.move(root+"/"+file, root+"/"+newfile)

Как использовать

Скопировать сценарий в пустой файл, сохранить это как rename_chars.py. Измените, если вам нужен список заметок. Как бы то ни было, scrip0t заменяет все вхождения проблемных символов символом подчеркивания, но выбор за вами. Протестируйте его в каталоге с помощью команды:
python3 /path/to/rename_chars.py <directory_to_rename>

Примечание

Обратите внимание, что в строке:

("\\", "_bsl_"),

в python обратная косая черта должен быть экранирован другой обратной косой чертой.

2
ответ дан 23 May 2018 в 17:40

Другие вопросы по тегам:

Похожие вопросы: