Изменение значений переменных в операторах If - PullRequest
0 голосов
/ 27 ноября 2018

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

set /p multiTune="Does your tune file need to be shared with multiple 
Element sequences? (y/n) "
Echo Multi Tune is %multiTune%
if "%multiTune%"=="y" (set /p tuneCount="How many sequences will need to share your tune file? ")
Echo Tune count is %tuneCount%
pause
if "%multiTune%"=="y" (SET /p tuneName="Enter the file letter/number combination for the R quant of your tune file. ") else (@ECHO The user specified there is no need for a second tune.)
Echo Tune Name is %tuneName%
pause
if "%multiTune%"=="y" (SET /a tuneCount+=1) else(set /a tuneCount-=tuneCount)
Echo Tune count is now %tuneCount%
pause
:loop 
if "%tuneCount%"=="0" goto exitloop
Set /p seqNumber="Enter the number for one of the sequences." 
copy %tuneName%.D.pdf "S%seqNumber%-TUN1_%tuneName%.D.pdf" 
echo %tuneName%.D.pdf renamed to S%seqNumber%-TUN1_%tuneName%.D.pdf
pause
Set /a tuneCount-=1
if "%tuneCount%"=="1" DEL "%tuneName%.D.pdf"
if "%tuneCount%"==1 goto exitloop
Echo %tuneCount%
pause
goto loop
:exitloop

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

if "%multiTune%"=="y" (SET /a tuneCount+=1) else(set /a tuneCount-=tuneCount)

Файл говорит, что что-то неожиданно и закрывается в этой точке, поэтому я не получил шанс выяснить, еслиЗакрученная часть даже работает.Точка +1 такова, что он входит в цикл и выполняет команды до достижения 1 и пропускает цикл, если он равен 0.

Я прочитал кучу информации о setlocal delayedexpansion и использую! 'вокруг переменных вместо%.Я не уверен, как реализовать это или это относится к моей проблеме вообще.Я знаю, что, возможно, есть более простой способ сделать утверждения if, но я новичок, и для меня это был самый простой способ понять это, поскольку я учился на лету методом проб и ошибок, и все, что вы видите, этоРезультаты одного дня обучения.

Любая помощь будет высоко ценится.Я старался быть максимально подробным о том, что я пытаюсь сделать, но если у вас есть какие-либо вопросы, я сделаю все возможное, чтобы ответить.

1 Ответ

0 голосов
/ 28 ноября 2018

Я действительно думаю, что вы делаете вещи настолько НАМНОГО сложнее ...

Получите исправленный фрагмент кода, который вы нам предоставили ( Примечание: я не трогалloop подпрограмма по теме ):

@echo off

choice /m "Does your tune file need to be shared with multiple element sequences? (y/n) " /C:yn /N
rem Echo Multi Tune is %errorlevel%
rem If errorlevel equals to 1 user input is "Y", it is 2 it is "N". (I commented the "echo" command as it changes the errorlevel value).

if errorlevel 2 goto question_N
if errorlevel 1 goto question_Y

:question_Y
set /p tuneCount="How many sequences will need to share your tune file? "
set /p tuneName="Enter the file letter/number combination for the R quant of your tune file. "
SET /a "tuneCount+=1"
goto loop

:question_N
set /p tuneCount="How many sequences will need to share your tune file? "
ECHO The user specified there is no need for a second tune.
set /a "tuneCount-=tuneCount"
goto loop

:loop
rem [Code you provided above]

Надеюсь, с вами все в порядке, тестируем и все работает!

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