2014-02-02 3 views
2

Это простой вопрос.% ~ dp0 показывает сообщение об ошибке

Некоторое время назад, когда я писал программу, я написал:

set /p a=<%~dp0\a.txt 

И это сработало.

В последнее время, когда я пишу программу, я написал:

set /p a=<%~dp0\a.txt 

И это не сработало.
Так что я должен использовать это:

set /p a=<%~dp0a.txt 

Но это таинственное. Как я могу использовать %~dp0 без \?
Таинственный. Кто-нибудь может объяснить?
ЛЮБАЯ помощь будет оценена по достоинству. Даже комментирование.

+0

Конец обратной косой черты, вероятно, сохранен так, что следующие две команды были равны: 'echo% ~ dp0% ~ nx0' ==' echo% ~ dpnx0'. –

+0

Посмотрите на них, много разных способов построения экстраполяции пути «% ~» или частичного пути. http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true –

ответ

2

Поместите это в папку и запустите его, и посмотрите на конец пути, эхом на экране.

@echo off 
echo "%~dp0" 
pause 

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

Во многих случаях в современных Windows два \\ в строке в пути также будут работать, но не все время.

+0

О, я понимаю. Это все еще довольно загадочно, но я знаю это сейчас. Но если '% ~ dp0' - это место, почему мы не должны использовать'% ~ dp0 \ '? (Точно так же, как местоположение \) – Jamie

+2

'% ~ dp0' уже имеет обратную косую черту в конце, поэтому, если вы добавите еще один, тогда будет два, а иногда два в строке не будут работать. – foxidrive

+0

Да, так же, как при использовании 'set/p varname = <% ~ dp0 \ something.txt' не работает. – Jamie

1

Потому что% ~ dp0 есть с \, вы можете использовать его без другого \.

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