2016-05-09 4 views
1

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

::Change names 

@echo off 
set /p DirLoc = "Enter file location:" 
cd %DirLoc% 
echo %DirLoc% 
dir 
set /p SetFrom = "What file type is it?" 
set /P SetTo = "What file type do you want?" 
echo Change from %SetFrom% 
echo to %SetTo% 
rename *.%SetFrom% *.%SetTo% 
echo process has been completed 
pause 

echo on 

По какой-то причине, когда я вставить папку, в моем случае это "C: \ Users \ Marco DS \ Desktop \ Test", программа будет идти только до «C: \ Users \ Marco DS \ Desktop ", что не хорошо. Я пробовал несколько альтернатив моих записей, но мне никогда не удается получить нужный каталог.

Спасибо за любые предложения.

+0

Удалите пробелы вокруг '=' в ваших 'set' ['/P'] командных строках; иначе они станут частью имени переменной ... – aschipfl

+0

Должен ли я удалить оба пробела? Благодаря! – user3604362

+0

Для 'set/P', вы должны удалить левое пространство, правое не имеет значения; однако для 'set' (без'/P') вы больше всего удаляете оба; поэтому для согласованности, я рекомендую удалить оба даже для 'set/P' ... – aschipfl

ответ

1

Часть вашей проблемы заключается в том, что при наборе переменных вы не должны использовать пробелы или кавычки, иначе они будут частью переменной. В отличие от многих языков, Batch считывает все пробельные символы как часть кода. В этом случае имя переменной устанавливается как %DirLoc %, а не только %DirLoc%. Чтобы ваш код работал так, как вам нужно, вам нужно удалить все нежелательные пробелы и кавычки в свой код.

Например: set /p DirLoc = "Enter file location:" становится set /p DirLoc=Enter file location:

Чтобы увидеть доказательство этого, попытайтесь писать echo %DirLoc % сразу после echo %DirLoc% и выполнения кода.

Смежные вопросы