|   |   | 
| 
 | Конкатенация значений переменных среды в одну строку в .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.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |