Я нашел несколько таких вопросов и попытался адаптировать ответы к своим потребностям, но пока не повезло. Я пытаюсь создать две записи контекстного меню в Windows 7, которые бы:
- Переместите все файлы из подпапок в данной папке в родительскую папку. Дубликаты должны быть переименованы в
Filename-Duplicate
но не удалены. - Удалить все пустые подпапки.
Мне удалось успешно создать необходимые записи в:
HKEY_CLASSES_ROOT\Directory\shell\Delete Empty Subfolders\command
а также
HKEY_CLASSES_ROOT\Directory\shell\Move all subfiles here\command
Команды (и я думаю, что здесь кроется проблема) следующие:
for /r ROOT %%d in (*.*) do move "%%d" "%1\"
for /f "delims=" %%d in ('dir /s /b /ad ^| sort /r') do rd "%%d"
Когда я выбираю папку, созданную для тестирования, и выбираю любую из контекстного меню, кажется, что пакетный файл на диске, на который указывает запись в реестре, найден и выполнен, но безрезультатно.
Я думаю, что проблема в самих командах. Я тоже не очень опытен с FOR . Если это может быть достигнуто с PowerShell, я открыт для этой опции. Если это вообще возможно, я бы избегал использования внешних зависимостей, таких как сторонние приложения, для выполнения команд.