Вопрос или проблема
Есть ли способ отключить диалоговое окно переименования расширения файла в Windows 7?
То, которое предупреждает вас
Переименование: Если вы измените расширение файла, файл может стать непригодным для использования. Вы уверены, что хотите изменить его?
Это возможно с помощью скрипта AutoHotkey:
While, 1
{
WinWait, Rename ahk_class #32770
WinActivate,
ControlClick, Button1
}
Установите AutoHotkey, сохраните вышеуказанный код в файл с расширением .ahk и запустите скрипт. Он будет ждать, пока не появится окно переименования. Когда оно появится, автоматически “нажмет” на кнопку Да (идентифицированную здесь как “Button1”).
Если вы не хотите устанавливать AutoHotkey, вот скомпилированная версия того же скрипта. Запустите исполняемый файл и наблюдайте за его магией :-).
Обратите внимание, что это на самом деле не решает вопрос, так как диалоговое окно все равно появится. Но это автоматизировано, так что больше вас это не будет беспокоить.
В ответ на комментарий о принятом ответе я также нашел скрипт AHK довольно медленным. Эта модификация, похоже, делает его быстрее:
While, 1
{
WinWaitActive, Renommer ahk_class #32770
send o
}
Вы заметите, что я использую окна на французском. Для английского используйте:
While, 1
{
WinWaitActive, Rename ahk_class #32770
send y
}
Для окон на португальском (по крайней мере в версии pt-BR) используйте:
While, 1
{
WinWaitActive, Renomear ahk_class #32770
send s
}
Это вполне возможно, с правильными инструментами, терпением, хорошим дизассемблером и немного удачи можно это отключить.
Однако, это не так просто, как изменение ключа реестра.
Вот пример, как кто-то отключает “задержку” при попытке удалить файл, который в использовании.
http://www.codeproject.com/KB/system/NoDeleteDelay.aspx
Я просто попробовал поискать и не нашел ничего полезного.
Думаю, лучшее решение, чем RtvReco, — это создание опции в контекстном меню, которая будет называться, например, “Rename2” и выводить сообщение с просьбой ввести новое имя файла, используя Windows API для его переименования.
Нельзя отключить сообщение о предупреждении изменения расширения файла. Оно сделано для обеспечения безопасности пользователя от случайного изменения файлов.
Источник: Microsoft Community Answer
Вместо того чтобы загружать приложение, почему бы просто не использовать команду ren *.aa *.bb
в cmd (командной строке)?
Вы не можете, однако, все не так уж и плохо.
Вы можете использовать RtvReco, чтобы автоматически закрывать предупреждение, как только оно появляется. Этот удобный инструмент предназначен для автоматизации многих аспектов Windows, включая нажатие кнопок в раздражающих диалоговых окнах, выбор пунктов меню, максимизацию и минимизацию окон для вас.
… или используйте хороший файловый менеджер вместо Проводника Windows (например, Total Commander).
Обе программы являются условно-бесплатными, попробуйте перед покупкой.
Я знаю об этом трюке с реестром, однако он не работает для меня с Windows 7.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
Установите значение
ConsentPromptBehaviorAdmin
на ноль0
и перезагрузите компьютер.
P.S.: Конечно, есть бесплатные альтернативы Total Commander, он просто оказался моим выбором файлового менеджера.
Я написал программу на C++, специально разработанную для быстрого закрытия этого диалогового окна. Она использует события win32, поэтому нет циклов “sleep” или опроса. Единственный способ сделать это быстрее – инъекция DLL в explorer.exe
, но я не хотел этого делать из-за сложности и проблем с надежностью.
Она не локализована — она будет работать только с английской строкой заголовка (“Rename”) и меткой кнопки (“&Yes”).
Аргументация: Я обнаружил, что решения на основе AutoHotkey работают медленнее, чем мне хотелось бы. У меня есть мышечная память на нажатие ENTER, когда я вижу это диалоговое окно, и поэтому задержка диалогового окна может привести к тому, что я начну “соревноваться” с AHK, чтобы подтвердить диалог (что приводит к тому, что я нажимаю ENTER, когда иконка файла выбрана, что открывает/запускает файл – не то, что я намеревался).
Вот код, который я использовал для решения этой проблемы в скрипте AutoIT. Единственная проблема в том, что он продолжает работать и использует некоторые ресурсы. Если у вас есть лучшая идея для улучшения скрипта, 🙂 :
While 1
if WinActive("Rename","") Then
Send("!y")
EndIf
WEnd
Так как у нас есть файлы, которые при загрузке автоматически добавляют дату и время в качестве расширения, я искал решение и нашел его.
Скачайте программу Free Commander. У них есть портативная версия, которую можно установить на USB-накопитель, если это необходимо.
Эта программа позволяет выбрать несколько файлов, как в моем случае, и изменить расширение без подтверждения.
Я действительно не думаю, что это возможно без использования одного из следующих способов:
- Командная строка (затруднительно, если вы не привыкли к ней)
- Стороннее обходное решение, будь то файловый менеджер или что-то, что решает проблему с уведомлением, чтобы вам не приходилось делать это
Лично я использую PTFB (Push the Freakin’ Button); у него низкая потребность в ресурсах и он очень быстрый. Он не совсем дешевый, но полезен для других задач.
Я тоже был очень устал от этого глупого сообщения, поэтому написал свой собственный AutoHotkey скрипт, с некоторыми новыми идеями.
Я не хотел использовать постоянный SetTimer или команду “while”, потребляющую ресурсы все время. Поскольку я всегда использую F2 для переименования файлов, я создал горячую клавишу, чтобы добавить этой клавише особую функцию. Таким образом, таймер запускается только при нажатии этой клавиши и отключается, когда задача выполнена.
Я также учел, что хочу воздействовать своим скриптом только на это конкретное диалоговое окно. Просто учитывать имя окна оказалось недостаточно, поскольку то же самое диалоговое окно появляется, когда вы пытаетесь переименовать элемент в меню “Пуск”, например.
Следовательно, есть несколько условий для работы этой функции. Во-первых, она будет работать в окнах проводника и на рабочем столе Windows. В других программах или средах F2 будет продолжать работать нормально. Также, чтобы предотвратить конфликты, такие как упомянутый выше, скрипт проверяет ширину и высоту окна переименования, чтобы убедиться, что оно соответствует.
Наконец, я также включил функцию автоматического выделения имени файла полностью (вместе с расширением, как в Windows до версии 7), потому что мне это нравится. Не стесняйтесь удалить строку Send ^+{end}, если вам это не нужно.
Для английских версий Windows вам нужно будет изменить “cambiar nombre” на то, что указано в заголовке вашего окна переименования. Также замените “s” на “y”. Если это не сработает, вы можете также использовать Autoit3 Window Spy, чтобы проверить, что ваше окно переименования имеет нужный размер (если (warnw = 515) и (warnh=154).
#SingleInstance force
GroupAdd, folders2, ahk_class CabinetWClass
GroupAdd, folders2, ahk_class WorkerW
GroupAdd, folders2, ahk_class ExploreWClass
GroupAdd, folders2, ahk_class Progman
return
$F2::
if ( Winactive("ahk_group folders2") )
{
Send {F2}
Send ^+{end}
settimer, renombrar, 20
return
}
Else
{
Send {F2}
Return
}
renombrar:
WinWaitActive, Cambiar nombre ahk_class #32770
WinGetPos,,, warnw, warnh, Cambiar nombre
if (warnw = 515) and (warnh=154)
{
send, s
click up left
settimer, renombrar, off
return
}
Else
{
settimer, renombrar, off
return
}
Вот AutoHotkey скрипт, который отключает/включает звук, когда появляется окно.
Все настройки перед циклом – это то, как я начинаю каждый свой скрипт для более быстрого выполнения.
Отредактируйте значение Sleep, пока не услышите звуковой сигнал.
#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
#SingleInstance Force
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1
Loop
{
WinWait, Rename ahk_class #32770 ahk_exe Explorer.EXE
Send, {Volume_Mute}
ControlClick, Button1
Sleep, 800
Send, {Volume_Mute}
}
Return
Вы можете использовать VBScript для этого:
Dim WshShell,strFile,strNewExt
Set WshShell = CreateObject("Wscript.Shell")
strFile = Wscript.Arguments.Unnamed(0)
strNewExt = InputBox("Please enter the new extension","Windows Explorer")
WshShell.Run "Cmd /c ren " & Chr(34) & strFile & Chr(34) & " *." & strNewExt
Затем сохраните этот VBScript как NoAlertRen.vbs в C: и чтобы создать пункт контекстного меню:
- Перейдите в
HKEY_CLASSES_ROOT\Folder\Shell
- Создайте новый ключ с именем
NoAlertRen
- Создайте новую строку с именем
MUIVerb
и установите значениеChange Extension Without alert
- Создайте новую строку с именем
Position
и установите значениеBottom
- Создайте новый поддомен с именем
command
- Установите значение по умолчанию на
cscript //nologo C:\NoAlertRen.vbs "%1"
Повторите шаги для HKEY_CLASSES_ROOT\*\Shell
.
Это добавит Change extension without alert
к папкам и файлам.
Другой хак
SHIFT+F10 -> Открыть окно команд/PowerShell здесь ->
- Командная строка:
ren "file" *.newExt
- PowerShell:
Rename-Item "File" -Newname {$_.Basename + ".NewExt"}
Создайте VBScript, который переименовывает файл, поместите его в специальную папку “SendTo”, щелкните правой кнопкой мыши на файле, расширение которого нужно изменить, и введите новое имя.
Больше никаких предупреждений, и это займет всего несколько минут для создания скрипта.
Скрипт содержит следующее:
on error resume next
Set objArg = Wscript.Arguments
do
if objArg.Count < 1 then exit do
fil=objArg(0)
Set FSO = CreateObject("Scripting.FileSystemObject")
if Err.Number > 0 then exit do
Set f1 = FSO.GetFile(objArg(0))
fil=f1.Name
i=inputbox("","",fil)
if i = fil then exit do
f1.Name = i
exit do
loop
Ответ или решение
Вопрос о том, как отключить предупреждение об изменении расширения файла в Windows 7, является актуальным для многих пользователей, которые регулярно работают с файлами и изменяют их расширения. Это предупреждение по умолчанию встроено в операционную систему Windows 7 для защиты пользователей от случайного изменения расширений, что может привести к нарушению работоспособности файлов. Однако для опытных пользователей оно может быть главным препятствием в быстрой и эффективной работе. В этом ответе рассмотрим, почему данное предупреждение невозможно отключить штатными средствами операционной системы и какие существуют альтернативные способы автоматизации этого процесса.
Теория
Первоначально нужно понять, что предупреждение об изменении расширения файла встроено в механизмы защиты Windows 7. Это сообщение подтверждает серьезность операции, в ходе которой, изменяя расширение, вы можете сделать файл недоступным или нефункциональным. Оно создано для минимизации риска случайных ошибок пользователей, особенно тех, кто не слишком знаком с особенностями работы файловых систем.
Пример
Теперь перейдем к некоторым примерам и методам, которые эксперты и продвинутые пользователи используют для автоматизации процесса подтверждения изменения расширения файла, вместо полного отключения предупреждения.
-
AutoHotkey Скрипт: Один из самых популярных способов — использование AutoHotkey (AHK) скрипта, который слушает появление окна предупреждения и автоматически нажимает кнопку «Да». Это решение не отключает предупреждение, но делает его менее навязчивым. Например:
While, 1 { WinWaitActive, Rename ahk_class #32770 send y }
Этот скрипт будет следить за появлением окна с заголовком "Rename" и автоматически нажимать "y", чтобы подтвердить действие.
-
Альтернативный файловый менеджер: Использование стороннего файлового менеджера, такого как Total Commander или Free Commander, позволяет избежать проблем. Эти программы предлагают удобные инструменты для массового переименования файлов и часто не имеют встроенных предупреждений при изменении расширений.
-
Командная строка: Для пользователей, привыкших к командной строке, изменение расширения файла через команду
ren
также полезно:ren *.old *.new
Эта команда быстро переименовывает файлы без срабатывания предупреждения.
Применение
Теперь рассмотрим практическое применение каждой из этих техник в контексте реальной работы. Например, если вы системный администратор или разработчик, регулярно управляющий множеством файлов, использование скрипта на базе AutoHotkey поможет вам сосредоточиться на более важных задачах, автоматизируя рутинные операции. Установка и настройка AHK не требует значительных временных затрат, но существенно повышает эффективность работы.
Если ваша работа связана с обработкой большого количества данных или файлов, альтернативные файловые менеджеры предоставят более продвинутые функции, такие как пакетное переименование, фильтрация и сортировка файлов, что может значительно ускорить рабочий процесс.
Для пользователей, стремящихся освоить командную строку, существует множество онлайн-ресурсов и сообществ, которые помогут углубить знания и расширить навыки работы с Windows. Использование командной строки обеспечивает высокую гибкость и контроль над операциями с файлами.
Завершая, стоит отметить, что если основным вашим устройством является Windows 7, и вам часто приходится менять расширения файлов, то использование описанных методов станет для вас наилучшим решением проблемы, не нарушая при этом стабильность и безопасность вашей системы.