2015-12-16 2 views
0

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

cd \ 
setlocal enabledelayedexpansion 

for /r %%i in (*.pst) do ( 
::echo %%~i 

set MyPath=%i% 
move "%MyPath%" "C:\users\zack.vigrass\desktop\" 
) 

endlocal 

PAUSE 

Редактировать: Я не понимал, что не задал вопрос. В основном я спрашивал, почему он возвращает пустой файл вместо предполагаемого .pst-файла.

+4

Почему бы не «переместить %% i' напрямую? И я думаю, '% i%' - это просто опечатка здесь в вашем примере? Если все это не применяется: укажите свою конкретную проблему, в настоящее время вы только указываете факты и не задаете вопрос. – Marged

+2

еще одна жертва знаменитой ловушки с задержкой расширения (http://stackoverflow.com/a/30284028/2152082) ... (и, конечно же, это опечатка, которую отметил @Marged) – Stephan

+1

set «MyPath = %% i» (с qoutes вокруг и '%' исправлено), поэтому любые конечные пробелы больше не станут частью значения MyPath' ... – aschipfl

ответ

2
set MyPath=%i% 

будет не установить mypath к содержимому метапеременный контролирующей for петлю (%%i, но установить его содержание i, который является обычной переменной среды, скорее всего, неопределенным и, следовательно, ничего не .

Дополнительные проблемы:. есть завершающие пробелы на линии, которые будут включены в значение, присвоенное

Следовательно mypath приобретет значение (несколько пробелов)

move "%MyPath%" "C:\users\zack.vigrass\desktop\" 

К сожалению, партия заменяет значение любого %var% в пределах блока (серия в скобки заявлений) буквально со значением этой переменной в время, в которое встречается for (в данном случае).

Так, когда for встречается, mypath не определен, то результат будет

move "" "C:\users\zack.vigrass\desktop\" 

Там кажется, нет никаких причин в данном случае передать значение mypath.

move "%%i" "C:\users\zack.vigrass\desktop\" 

должен работать на вас.

+0

Спасибо, что я решил исправить свои проблемы. Я ценю помощь. – Dan

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