Вот решение, которое использует JREPL.BAT - утилита поиска / замены регулярного выражения .JREPL - это чистый сценарий (гибридный JScript / batch), который запускается на любом компьютере под управлением Windows начиная с XP и далее - не требуется сторонний exe-файл.
Я использовал простой ROT13 подстановочный шифр Запуск сценария один разшифрует имена.Выполнение во второй раз восстанавливает имена к исходным значениям.Я решил зашифровать только имя файла, а не расширение.Также было бы легко изменить шифрование расширения.
encryptNames.bat
@echo off
pushd %1 .
call :sub
popd
exit /b
:sub Subroutine needed to guarantee %-f0 gives the correct value
setlocal
set "find=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
set "repl=NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm"
set "p=/(.*)/"
set "prepl={$1}"
for /f "delims=" %%C in (
'cmd /c "for %%F in (*) do @if "%%~fF" neq "%~f0" echo ren "%%F" "/%%~nF/%%~xF""^|jrepl find repl /t "" /p p /prepl "{$1}" /v'
) do echo %%C&%%C
Вызов encryptNames.bat без каких-либо аргументов зашифрует все файлы втекущий каталог (за исключением самого файла encryptNames.bat)
Вы можете зашифровать имена в любой папке, передав путь к папке в качестве аргумента.Например:
encryptNames c:\my\folder\to\be\encrypted
Обратите внимание, что encryptNames.bat предполагает, что JREPL.BAT находится в папке, указанной в переменной среды PATH.Если вы поместите JREPL.BAT в ту же папку, что и encryptNames.bat, а затем зашифруете файлы в этой папке, то JREPL.BAT будет зашифрован, и вы больше не сможете запускать encryptNames.bat!