Имя: Пароль:
IT
Админ
Конкатенация значений переменных среды в одну строку в .cmd/.bat файлах
0 Vladal
 
21.09.15
11:16
Есть две переменные в среде Windows:

%homedrive% со строковым значением "c:"
%homepath% со строковым значением "\users\user"

Мне нужно значения этих переменных вставить в команду dir, чтобы получить содержимое папки c:\users\user

В командной строке запускаю echo %homedrive%%homepath% и вижу результат: c:\users\user
Запускаю dir %homedrive%%homepath% и получаю ошибку, что файл не найден.
По отдельности DIR работает с каждой из переменных:
dir %homedrive% --- выдаёт содержимое текущей (активной) директории на диске С:.
dir %homepath% --- выдаёт содержимое папки \users\user только если активный диск С:

Каким образом "склеить" в одну строку значения этих переменных и подставить в команду dir?
1 Провинциальный 1сник
 
21.09.15
11:19
УМВР. ЧЯДНТ?
-----------

B:\>test.cmd

B:\>set homedrive=c:\

B:\>set homepath=users\user

B:\>echo c:\users\user
c:\users\user
2 Vladal
 
21.09.15
11:20
Я сделал так:
set testline = ""
set testline = testline + %homedrive% + %homepath%
dir %testline%

А одной командой можно?
3 Vladal
 
21.09.15
11:21
(1) что ты делаешь не так? ты невнимательно читаешь сабж

я эхо с переменной выводил. заставь DIR вывести содержимое нужного пути.
4 Провинциальный 1сник
 
21.09.15
11:21
(3) Да легко.
---

B:\>test.cmd


B:\>set homedrive=c:\

B:\>set homepath=users\user

B:\>echo c:\users\user
c:\users\user

B:\>dir c:\users\user
Том в устройстве C имеет метку SYSTEM
Серийный номер тома: 182C-7AF6

Содержимое папки c:\users\user

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 Провинциальный 1сник
 
21.09.15
11:22
А вот собственно командный файл test.cmd
---

set homedrive=c:\
set homepath=users\user

echo %homedrive%%homepath%
dir %homedrive%%homepath%
6 Smallrat
 
21.09.15
11:23
тоже всё робит
7 Vladal
 
21.09.15
11:23
(1) echo c:\users\user отличается от echo %homepath%? не?
8 Vladal
 
21.09.15
11:23
(5) У меня не робит
9 Vladal
 
21.09.15
11:24
C:\Users\User>dir %homedrive%%homepath%
Том в устройстве C не имеет метки.
Серийный номер тома: 8234-45A1

Содержимое папки C:\Users

Файл не найден

Содержимое папки C:\Users\User

Файл не найден

C:\Users\User>
10 Vladal
 
21.09.15
11:26
ver выдаёт такую версию:

Microsoft Windows [Version 6.1.7601]

а у вас?
11 Провинциальный 1сник
 
21.09.15
11:26
Лучше скиньте фрагмент вашего cmd-файла, который не работает.
12 Smallrat
 
21.09.15
11:27
а если переименовать переменные?
13 Провинциальный 1сник
 
21.09.15
11:27
(10)
Microsoft Windows XP [Версия 5.1.2600]
14 Smallrat
 
21.09.15
11:27
15 Провинциальный 1сник
 
21.09.15
11:28
И еще.. вы случайно не путаете интерактивную работу в ком.строке с работой командного файла? Доступ к переменным по разному реализован в этих вариантах.
16 Vladal
 
21.09.15
11:28
(11) Файл представлен в (2). Я захотел одной командой получить.
17 Провинциальный 1сник
 
21.09.15
11:29
(16) Не понял. Вы хотите одной командой присвоить значения переменным, а потом вызвать дир с этими переменными в качестве каталога?
18 Smallrat
 
21.09.15
11:29
переводчик MS жжёт:
перевёл "may not function as you intend" как "могут работать, как предполагается"
в итоге получается весёлый текст:
"После изменения одного или нескольких из следующих переменных среды, эти переменные могут работать как вам бы хотелось:
HOMEDRIVE"
19 Vladal
 
21.09.15
11:30
(15) Ну вот совсем другой разговор, а то ЧЯДНТ, ЧЯДНТ...
Возможно, из командного файла и будет так. Я пробовал интерактивно. В батнике одной строкой тоже не работает, собственно, из-за чего всё и началось.

(17) Нет, они уже присвоены системой (виндой). Я для примера взял эти переменные как самый наглядный пример.
20 Vladal
 
21.09.15
11:32
выходит, то, что я знаю со времен ДОС, в интерпретаторе Виндоуз 7 не работает. Или работает не так, как я предполагал.
21 Провинциальный 1сник
 
21.09.15
11:36
(20) dir "%homedrive%%homepath%"
22 Vladal
 
21.09.15
11:41
(21) ТОже пробовал. не работает. Эхо работает, в ДИР не хочет. Толкьо в батнике с присваиванием промежуточной переменной как в (2)
23 Vladal
 
21.09.15
11:41
(21) А нет. Работает. С кавычками работает, а без них нет.
Спасибо. Получилось.
24 Провинциальный 1сник
 
21.09.15
11:50
(23) Если каталог пользователя без пробелов - то работает и без кавычек. Проверил сейчас на w7.
Независимо от того, куда вы едете — это в гору и против ветра!