Renomeando um arquivo sem especificar o diretório em um script .bat / .cmd

0

O que eu quero fazer:

Estou basicamente tentando ter dentro do meu comando algo ao longo das linhas: "se haha.txt existir, renomeie para lol.txt". No entanto, haverá muitos arquivos haha.txt em muitos diretórios diferentes e, para que funcione, eu preciso poder executar esse comando e fazer com que ele renomeie o arquivo haha.txt no diretório atual. No entanto, em todas as minhas tentativas, parece que sempre quero que eu especifique exatamente onde o arquivo está localizado, o que não funcionará. (Talvez seja porque o comando está no caminho, não nesta pasta?)

Então a questão é:

Existe alguma maneira de usar o comando RENAME / REN em um arquivo em lote sem especificar o diretório e, em vez disso, renomeá-lo no diretório atual?

Edit: Conforme solicitado, aqui está meu script (com todas as coisas que não são importantes para nós retiradas)

Além disso, algumas outras informações:

  • Nome: SSHCrack.cmd
  • Aberto por: Abrindo o prompt de comando, indo para uma pasta com o uncrackedSSH.txt e digitando SSHCrack 22
  • Objetivo: Renomear uncrackedSSH.txt para crackedSSH.txt
  • Localizado em: caminho

Script:

@echo off
title SSHCrack
set x=%1

if not defined x goto unknown

if %x%==22 (
goto correct
) else (
goto wrong
)

:correct
echo SSHCrack running...
if exist uncrackedSSH.txt (
ren uncrackedSSH.txt crackedSSH.txt
echo -- SSHCrack Complete --
goto end
)

if exist crackedSSH.txt (
echo SecureShell port already open
goto end
) else (
echo SecureShell port not found
goto end
)
:unknown
echo Please specify a port number
goto end
:wrong
echo Wrong port number
:end
title cmd.exe

Eu tentei usar "ren. \ uncrackedSSH.txt crackedSSH.txt", usando "cd% cd%" para vincular ao diretório atual, tentei vincular diretamente com uma pasta específica com "cd / d C: \ SpecificFolder ", e tentei colocar o arquivo .bat na mesma pasta que o uncrackedSSH.txt e executá-lo de lá, mas sempre acabo recebendo:

SSHCrack Running...
The system cannot find the file specified.
-- SSHCrack Complete --

Sempre que vou para a pasta, o nome de uncrackedSSH.txt não mudou.

    
por Jarren 08.11.2017 / 16:43

1 resposta

1

Os arquivos de lote só renomearão os arquivos que estão na pasta atual.

Então, é simples:

ren haha.txt lol.txt

é o suficiente. Não há necessidade de especificar a pasta.

Se você receber um erro que não pode encontrar o haha.txt, verifique se o caminho está correto. Você pode navegar primeiro para a pasta correta e renomeá-la. Por exemplo:

cd /d c:\temp
ren haha.txt lol.txt

Portanto, se o arquivo em lote não estiver em c: \ temp, você precisará usar o comando cd ou colocar o arquivo em lotes em uma pasta que faça parte da variável ambiental do caminho, como c: \ windows \ system32, você pode iniciar um prompt de comando, executar a parte do CD você mesmo, em seguida, basta digitar o nome do batchfile que possui o conteúdo do primeiro exemplo nesta resposta.

EDITAR: Com base nas novas informações fornecidas, parece que o arquivo batch não foi encontrado, e não um erro da renomeação. Se você copiar o arquivo batch diretamente para a pasta e iniciá-lo, isso funciona? Esta não é uma correção permanente, apenas um passo para confirmar que o arquivo batch está localizado na pasta errada.

    
por 08.11.2017 / 17:03