Конкатенация значений переменных среды в одну строку в .cmd/.bat файлах #753713


#0 by Vladal
Есть две переменные в среде Windows: %homedrive% со строковым значением "c:" %homepath% со строковым значением "usersuser" Мне нужно значения этих переменных вставить в команду dir, чтобы получить содержимое папки c:usersuser В командной строке запускаю echo %homedrive%%homepath% и вижу результат: c:usersuser Запускаю dir %homedrive%%homepath% и получаю ошибку, что файл не найден. По отдельности DIR работает с каждой из переменных: dir %homedrive% --- выдаёт содержимое текущей (активной) директории на диске С:. dir %homepath% --- выдаёт содержимое папки usersuser только если активный диск С: Каким образом "склеить" в одну строку значения этих переменных и подставить в команду dir?
#1 by Провинциальный 1сник
УМВР. ЧЯДНТ? ----------- B:>test.cmd B:>set homedrive=c: B:>set homepath=usersuser B:>echo c:usersuser c:usersuser
#2 by Vladal
Я сделал так: set testline = "" set testline = testline + %homedrive% + %homepath% dir %testline% А одной командой можно?
#3 by Vladal
что ты делаешь не так? ты невнимательно читаешь сабж я эхо с переменной выводил. заставь DIR вывести содержимое нужного пути.
#4 by Провинциальный 1сник
Да легко. --- B:>test.cmd B:>set homedrive=c: B:>set homepath=usersuser B:>echo c:usersuser c:usersuser B:>dir c:usersuser Том в устройстве C имеет метку SYSTEM Серийный номер тома: 182C-7AF6 Содержимое папки c:usersuser 21.09.2015  11:20    <DIR>          . 21.09.2015  11:20    <DIR>          .. 21.09.2015  11:20                 0 test.txt                1 файлов              0 байт                2 папок  29 492 412 416 байт свободно
#5 by Провинциальный 1сник
А вот собственно командный файл test.cmd --- set homedrive=c: set homepath=usersuser echo %homedrive%%homepath% dir %homedrive%%homepath%
#6 by Smallrat
тоже всё робит
#7 by Vladal
echo c:usersuser отличается от echo %homepath%? не?
#8 by Vladal
У меня не робит
#9 by Vladal
C:UsersUser>dir %homedrive%%homepath% Том в устройстве C не имеет метки. Серийный номер тома: 8234-45A1 Содержимое папки C:Users Файл не найден Содержимое папки C:UsersUser Файл не найден C:UsersUser>
#10 by Vladal
ver выдаёт такую версию: Microsoft Windows [Version 6.1.7601] а у вас?
#11 by Провинциальный 1сник
Лучше скиньте фрагмент вашего cmd-файла, который не работает.
#12 by Smallrat
а если переименовать переменные?
#13 by Провинциальный 1сник
Microsoft Windows XP [Версия 5.1.2600]
#14 by Smallrat
#15 by Провинциальный 1сник
И еще.. вы случайно не путаете интерактивную работу в ком.строке с работой командного файла? Доступ к переменным по разному реализован в этих вариантах.
#16 by Vladal
Файл представлен в . Я захотел одной командой получить.
#17 by Провинциальный 1сник
Не понял. Вы хотите одной командой присвоить значения переменным, а потом вызвать дир с этими переменными в качестве каталога?
#18 by Smallrat
переводчик MS жжёт: перевёл "may not function as you intend" как "могут работать, как предполагается" в итоге получается весёлый текст: "После изменения одного или нескольких из следующих переменных среды, эти переменные могут работать как вам бы хотелось: HOMEDRIVE"
#19 by Vladal
Ну вот совсем другой разговор, а то ЧЯДНТ, ЧЯДНТ... Возможно, из командного файла и будет так. Я пробовал интерактивно. В батнике одной строкой тоже не работает, собственно, из-за чего всё и началось. Нет, они уже присвоены системой (виндой). Я для примера взял эти переменные как самый наглядный пример.
#20 by Vladal
выходит, то, что я знаю со времен ДОС, в интерпретаторе Виндоуз 7 не работает. Или работает не так, как я предполагал.
#21 by Провинциальный 1сник
dir "%homedrive%%homepath%"
#22 by Vladal
ТОже пробовал. не работает. Эхо работает, в ДИР не хочет. Толкьо в батнике с присваиванием промежуточной переменной как в
#23 by Vladal
А нет. Работает. С кавычками работает, а без них нет. Спасибо. Получилось.
#24 by Провинциальный 1сник
Если каталог пользователя без пробелов - то работает и без кавычек. Проверил сейчас на w7.
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям