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