Пакетное копирование Переименовать, Подскажите на дубликате - PullRequest
1 голос
/ 12 апреля 2020

Супер новый для пакетных файлов и программирования в целом, поэтому любая помощь ценится; Я пытаюсь скопировать и переименовать файл на основе ввода пользователя, а затем открыть новый файл. Моя проблема в том, что если есть дубликат, я хочу, чтобы он повторно запрашивал у пользователя другое имя. Прямо сейчас у меня есть:

SET /P "dname=Type new sheet name, then press Enter:"
COPY "O:\master.xlsx" "O:\%dname%.xlsx" /V /-Y
START /D "O:" %dname%.xlsx

И это работает для копирования и переименования, но если есть дубликат, я получаю приглашение «Вы хотите скопировать Y / N», но если я говорю нет, это не спрашивает другое имя. Спасибо!

Редактировать 1: Теперь у меня есть это:

SET /P "dname=Type sheet name, then press Enter:"
IF EXIST "O:\%dname%.xlsx" (
    :RETRY
    SET /P "dname=Error! There is already a file named %dname%. Please choose a new unique name:"
    IF EXIST "O:\%dname%.xlsx" (
        GOTO :RETRY
        ELSE GOTO :COPY
        )
    ) ELSE GOTO :COPY
:COPY
COPY "O:\master.xlsx" "O:\%dname%.xlsx" /V /-Y

И, похоже, работает надежно. Есть ли лучший способ оптимизировать / оптимизировать это с помощью al oop? Или это достаточно хорошо?

1 Ответ

0 голосов
/ 12 апреля 2020

Вот как бы я это сделал:

@echo off
setlocal
set "oldname=master"
:loop
set "newname=%oldname%"
set /p "newname=New Name: "
if exist "%newname%.xlsx" (
  echo %newname%.xlsx already exists. Chose another name.
  goto :loop
)
COPY "%oldname%.xlsx" "%newname%.xlsx"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...