как переименовать с помощью переменных пакета - PullRequest
0 голосов
/ 03 февраля 2019

Итак, у меня есть этот блок кода в моем пакетном файле, который работает

set /p projectnumber= enter project number: 
set /p projectname= enter project name: 
ren "C:\projects\temp.dwg" "19-%projectnumber% - %projectname%.dwg

Так что я попробовал это, и это работает

set /p projectnumber= enter project number: 
set /p projectname= enter project name: 
set _dwg="C:\projects\temp.dwg"
ren %_dwg% "19-%projectnumber% - %projectname%.dwg" 

но что я действительно хотел бы иметь работучто-то вроде этого

set /p projectnumber= enter project number: 
set /p projectname= enter project name: 
set _dwg="C:\projects\temp.dwg"
set _dwgrename="19-%projectnumber% - %projectname%.dwg"
ren %_dwg% %_dwgrename% 

, но, похоже, это не работает. Это первый настоящий командный файл, который я написал, поэтому я не уверен, почему второй код работает, а третий - нет,

1 Ответ

0 голосов
/ 03 февраля 2019

Несколько проблем, требующих исправления.

  1. Правильно Цитирование
  2. Правильное использование Set
  3. Правильное использование Ren

Сначала у нас есть цитаты.Я вижу, вы пытаетесь заставить set _dwg захватить весь путь "C:\projects\temp.dwg", но правильный способ сделать это - set /switch "String=(Your data)".Поскольку мы цитируем всю строку, это означает, что у вас не будет конфликтов с пробелами в пути к файлу.

Во-вторых, быстро захотелось обратиться к пробелу в ваших операторах set /p - projectnumber= enter не должно быть пробелапосле =.

Наконец, я настоятельно рекомендую указывать путь к файлу и назначение в командах.Ради Ren команд вы, несомненно, захотите процитировать путь к файлу, поскольку вы даете путь, а не имя файла.

Если вы уже не знаете, вы можете использовать echo off, чтобы удалить консольное эхо.

Исправленный сценарий:

@ECHO OFF

set "_dwg=C:\projects\temp.dwg"

set /p "projectnumber=enter project number: "
set /p "projectname=enter project name: "
set "_dwgrename=19-%projectnumber% - %projectname%.dwg"

ren "%_dwg%" "%_dwgrename%"

pause

PS: Не уверен, пытаетесь ли вы вычесть 19 из %projectnumber% но если вы хотите, вы можете заглянуть в set /a или ввести set /? в окно cmd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...