Estou tentando usar um script em lote / .bat que renomeie um único arquivo para uma seqüência aleatória de caracteres. Tudo o que encontrei na pesquisa até agora é renomear todos os arquivos em um único diretório - o que é um pouco mais do que estou procurando.
O exemplo de script a seguir é a base do que estou trabalhando. Ele basicamente renomeia todos os arquivos .txt no diretório de trabalho para um nome aleatório de 8 caracteres, preservando a extensão do arquivo:
@echo off
setlocal disableDelayedExpansion
set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.txt') do call :renameFile "%%F"
exit /b
:renameFile
setlocal enableDelayedExpansion
:retry
set "name="
for /l %%N in (1 1 8) do (
set /a I=!random!%%36
for %%I in (!I!) do set "name=!name!!chars:~%%I,1!"
)
echo if exist !name!.jpg goto :retry
endlocal & ren %1 %name%.txt
A razão pela qual pretendo renomear apenas um único arquivo é porque meu objetivo final é criar uma extensão de shell que use o script - eu quero poder clicar com o botão direito do mouse em um único arquivo, clicar em "Renomear Aleatório", e chama o arquivo em lotes para renomear o arquivo selecionado para algum nome aleatório.
Se alguém tiver alguma entrada ou modificação no código acima mencionado que me ajudaria, isso seria ótimo! obrigado
fonte
É muito simples. Aqui está o arquivo em lotes:
Depois disso, você precisa acessar o registro na seção com o nome da extensão do arquivo que deseja renomear. No meu caso, vou
HKEY_CLASSES_ROOT\.txt
e verifico qual é o valor da chave Padrão. No meu caso, é o arquivo Notepad ++ _. Então eu vou paraHKEY_CLASSES_ROOT\Notepad++_file
, criar uma nova subchave, por exemplo "Renomear para Aleatório" e subchave "comando" (sem aspas). EmHKEY_CLASSES_ROOT\Notepad++_file\shell\Rename to Random\command
Eu edito o valor padrão para"C:\Temp\random_rename.bat" "%1"
(com aspas!)Depois disso, quando clico com o botão direito do mouse em cada arquivo txt e escolhe a opção Renomear para Aleatório, ele é renomeado para o nome de 8 dígitos.
PS Edite o caminho para o local real do seu arquivo em lotes quando você o adiciona ao registro. Além disso, você pode editar uma variável
%newname%
para o que quiser. No meu caso, seu nome é combinado de dois grupos de 4 dígitos, cada um deles é gerado pela variável do sistema%random%
.Verifique isso para ações passo a passo no registro.
fonte
%RANDOM%
gera um número inteiro aleatório de 0 a 32.767, portanto,% random %% random% não tem garantia de retornar exatamente 8 dígitos. Além disso, o script OPs produz 8 caracteres e não 8 dígitos.