1

На моем компьютере с Win7 x64, когда я запускаю эту команду, чтобы найти имя текущей папки

for %* in (.) do echo %~n*

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

Например

C:\temp\2.4.0> for %* in (.) do echo %~n* # outputs 2.4
C:\temp> for %* in (.) do echo %~n*       # outputs temp

Не уверен, почему это странное поведение происходит. Есть ли другой способ узнать только текущее имя папки? Под "текущим" я подразумеваю папку, из которой запускался файл bat.

1 ответ1

4

С именем папки, таким как «2.4.0», Windows будет воспринимать «2.4» как имя, а «.0» как расширение.

Поэтому, если вам нужно полное имя, включая расширение, вам нужно использовать %~nx* .

Кстати, это очень странный код. Использование * в качестве переменной FOR скорее всего отбросит среднего человека.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .