Что я хочу сделать:

Я в основном пытаюсь получить внутри моей команды что-то вроде: «если haha.txt существует, переименуйте в lol.txt». Однако в разных каталогах будет много файлов haha.txt, и для того, чтобы она работала, мне нужно иметь возможность выполнить эту команду и переименовать только файл haha.txt в моем текущем каталоге. Однако во всех моих попытках всегда хочется, чтобы я точно указывал, где находится файл, что не сработает. (Возможно, это потому, что команда находится в пути, а не в этой папке?)

Итак, вопрос:

Есть ли способ использовать команду RENAME/REN в командном файле без указания каталога, и вместо этого переименовать его в текущем каталоге?

Изменить: В соответствии с просьбой, вот мой сценарий (со всеми вещами, не важными для нас, взяты из него)

Также немного другой информации:

  • Имя: SSHCrack.cmd
  • Открывается с помощью: открытия командной строки, перехода в папку с uncrackedSSH.txt и ввода SSHCrack 22
  • Цель: переименование uncrackedSSH.txt в crackedSSH.txt
  • Расположение: Путь

Автор сценария:

@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

Я попытался использовать «ren.\ UncrackedSSH.txt crackedSSH.txt», используя «cd% cd%» для ссылки на текущий каталог, попытался напрямую связать определенную папку с «cd /d C:\ SpecificFolder» и попытался поместить файл .bat в ту же папку, что и uncrackedSSH.txt и запустить его оттуда, но я всегда получаю:

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

Всякий раз, когда я захожу в папку, имя uncrackedSSH.txt не меняется.

1 ответ1

1

Пакетные файлы будут переименовывать только те файлы, которые находятся в текущей папке.

Так просто:

ren haha.txt lol.txt

достаточно. Не нужно указывать папку.

Если вы получаете сообщение об ошибке, что он не может найти haha.txt, то убедитесь, что путь правильный. Вы можете сначала перейти к нужной папке и затем переименовать. Например:

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

Поэтому, если пакетный файл не находится в c:\temp, вам нужно либо использовать команду cd, либо поместить пакетный файл в папку, которая является частью переменной окружения path, например c:\windows\system32, Вы можете запустить командную строку, выполнить часть cd самостоятельно, а затем просто ввести имя пакетного файла, в котором содержится содержание первого примера в этом ответе.

РЕДАКТИРОВАТЬ: На основании новой предоставленной информации, кажется, что ваш пакетный файл не найден, а не ошибка от переименования. Если вы скопируете пакетный файл прямо в папку и запустите его, это работает? Это не постоянное исправление, это просто шаг, чтобы подтвердить, что пакетный файл находится в неправильной папке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .