Пакетное шифрование / расшифровка имен файлов Windows - PullRequest
0 голосов
/ 26 сентября 2018

Я ищу способ шифрования / расшифровки (шифрования / дешифрования) имен файлов каждого файла в каталоге с помощью пакетного сценария.Один файл .bat шифровал бы имена файлов в текущем каталоге, а другой расшифровывал бы их.

У меня есть идея относительно того, как это может работать, но не хватает навыков / опыта работы с пакетным файлом, чтобы это произошло на моемown: Сценарий шифрования должен найти значение ASCII каждого символа в каждом имени файла, увеличить каждый символ на определенную величину, а затем соответственно переименовать каждый файл.Сценарий дешифрования будет функционировать аналогичным, но противоположным образом.Просто идея - до тех пор, пока имя файла будет полностью зашифровано и расшифровано, я буду счастлив.

Любые мастера по пакетным файлам готовы протянуть руку?Заранее спасибо!

1 Ответ

0 голосов
/ 26 сентября 2018

Вот решение, которое использует 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!

...