• Я хочу переименовать папку, чтобы иметь только текущую дату или, черт возьми, даже .old
  • Динамическое переименование папки

Я хочу один раз запросить ввод пользователя, попросить его найти папку, а затем переименовать ее, как только она будет найдена. Независимо от того, что я делаю, я получаю синтаксическую ошибку

@ECHO off
cls

set /P FOLDER="What the Folder Name: "
rename "%userprofile%\Downloads\"%FOLDER%"" "%userprofile%\Downloads\"%FOLDER%" - %date:/=-%"
pause
cls
goto start

Выход:

What the Folder Name: folder
The syntax of the command is incorrect.
Press any key to continue . . .
1
Lily 14 Окт 2020 в 22:09

1 ответ

Лучший ответ

Выполняется ren /? или rename /? состояния:

RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.

Другими словами, i ожидает только новое имя в качестве второго параметра. Это не сработает с синтаксической ошибкой:

ren "D:\My Folders\Old name" "D:\My Folders\New name"

Где это выполнит переименование:

ren D:\My Folders\Old name" "New Name"

Кроме того, вам не нужно смешное цитирование. Вам просто нужно один раз заключить всю строку в кавычки, чтобы cmd не видел пробелы в качестве разделителей команд / параметров. Итак, этот код должен делать то, что вы хотите:

@echo off & cls
set /p "FOLDER=What the Folder Name: "
rename "%userprofile%\Downloads\%FOLDER%" "%FOLDER%" - %date:/=-%"
pause
cls
goto start

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

0
Gerhard 14 Окт 2020 в 20:00