Вопросы по cmd.exe в 2000

durka82

1. Как в 2000 сделать, чтобы работала рекурсивная постановка значений переменных в другие переменные?
Например:
set t1=1
set t2=%t1%2
set t3=%t2%2%t1%
Надо чтобы в t3 было "1221", а не "%t1% 221".
В ХР работает нормально.
2. Как обновить переменные в текущем сеансе до системных? То есть сбросить на те значения. которые были в начале сеанса.
3. Можно ли текущие значения переменных сеанса сохранить как глобальные/пользовательские?

Ivan8209

В первую очередь, прочитать "set /?".
---
...Я работаю антинаучным аферистом...

durka82

Только вот не хотелось бы для этого обрабатывать эти переменные скриптами.
Хотелось бы, чтобы оно работало, будучи так прописано в виндовом диалоге "переменные среды".
Раз оно работает в ХР, мб надо просто ключик в реестре 2000 поправить, чтобы заработало?..

ava3443

А каким образом виндовый диалог "переменные среды" узнает порядок, в котором тебе нужно эти переменные определять?

durka82

Видимо он делает несколько проходов.
Но в 2000 он видимо делает только 2.
А в ХР - по крайней мере 3 - большую вложенность не проверял.
Мб этот параметр (число проходов) просто есть в реестре?
Но то, что он узнает порядок - факт - работает же

Ivan8209


Microsoft Windows 2000 [Версия 5.00.2195]
(С) Корпорация Майкрософт, 1985-2000.

C:\>set t1=test

C:\>set t2=%t1%1

C:\>echo %t2%
test1

C:\>set t3=%t2%-%t1%

C:\>echo %t3%
test1-test

C:\>

Я чего-то не так делаю?
---
...Я работаю антинаучным аферистом...

0000

Win2K Rus SP4

Или я не понял что ты хочешь?

durka82

Попробуйте задать их как переменные в виндовом диалоге "переменные среды"

0000

Так?

durka82

А попробуй в cmd написать
set t3  

0000


?

durka82

Спасибо, дома еще раз проверю.

bleyman

Используйка лучше Виндовс Скриптинг Хост.
// This script initializes some environment variables
var WshShell = WScript.CreateObject("WScript.Shell");
var WshSysEnv = WshShell.Environment("SYSTEM");

// Visual Studio
WshSysEnv("VSINSTALLDIR")="C:\\Program Files\\Microsoft Visual Studio .NET 2003\\Common7\\IDE";
WshSysEnv("VCINSTALLDIR")="C:\\Program Files\\Microsoft Visual Studio .NET 2003";
WshSysEnv("FrameworkDir")="C:\\WINDOWS\\Microsoft.NET\\Framework";
WshSysEnv("FrameworkVersion")="v1.1.4322";
WshSysEnv("FrameworkSDKDir")="C:\\Program Files\\Microsoft Visual Studio .NET 2003\\SDK\\v1.1";
WshSysEnv("DevEnvDir")="%VSINSTALLDIR%";
WshSysEnv("MSVCDir")="%VCINSTALLDIR%\\VC7";

// Path
var PATH = "";
// windows
PATH += "c:\\windows\\system32;c:\\windows;c:\\windows\\system32\\WBEM;";
// VS
PATH += "%DevEnvDir%;%MSVCDir%\\BIN;";
PATH += "%VCINSTALLDIR%\\Common7\\Tools;%VCINSTALLDIR%\\Common7\\Tools\\bin\\prerelease;";
PATH += "%VCINSTALLDIR%\\Common7\\Tools\\bin;";
PATH += "%FrameworkSDKDir%\\bin;%FrameworkDir%\\%FrameworkVersion%;";
PATH += "c:\\program files\\WinRAR";

WshSysEnv("PATH") = PATH;

WshSysEnv("INCLUDE") = "%MSVCDir%\\ATLMFC\\INCLUDE;%MSVCDir%\\INCLUDE;"
+ "%MSVCDir%\\PlatformSDK\\include\\prerelease;"
+ "%MSVCDir%\\PlatformSDK\\include;%FrameworkSDKDir%\\include";


WshSysEnv("LIB") = "%MSVCDir%\\ATLMFC\\LIB;%MSVCDir%\\LIB;"
+ "%MSVCDir%\\PlatformSDK\\lib\\prerelease;%MSVCDir%\\PlatformSDK\\lib;"
+ "%FrameworkSDKDir%\\lib";

durka82

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

durka82

Короче я тормоз
ХР в этом смысле ничем от 2000 не отличается.
Просто я пример неправильный выбрал.
Попробуйте в этом примере t1 заменить на t5, а t2 на t4

Ivan8209

И что?
Если хочешь, чтобы подставлялись пустые строки, присвой их.
---
...Я работаю антинаучным аферистом...

durka82

В смысле?
Я имел в виду, что это:
set t1=1
set t2=%t1%2
set t3=%t2%2%t1%
заменить на это:
set t5=1
set t4=%t5%2
set t3=%t4%2%t5%

Но задать их как переменные в виндовом диалоге "переменные среды"
У меня получилось следующее и на 2000, и на ХР:
t3=%t4%0123
t4=123321
t5=123

artimon

Ну значит винда их присваивает по алфавиту

durka82

А по вопросам 2 и 3 вообще никто не в курсе?

artimon

3. Думаю нет, но я в этом вопросе не „копенгаген“
2. см. setlocal в Help and Support

artimon

Собственно, по 3-му пункту. Ты можешь запихать их ручками в реестр.
Т.е. создать reg файл и напустить на него regedit. Или ботать команду reg, но я не знаю в какой винде она появилась.

durka82

Спасибо, посмотрю.
Оставить комментарий
Имя или ник:
Комментарий: