muwind 发表于 2022-2-11 22:55:58

关于setenv疑问

本来想写个魔改setenv的函数,目的是getenv是nil的时候就什么也不做,(原因是env对字母大小写是有要求的,想用这个避免给错误的env设置)但在写QnewTemplate的提示nil,我查了下是因为重置配置文件后,这个注册表中没有QnewTemplate,也就是说QnewTemplate不存在,getenv的时候就得到nil,导致了用自定义函数的时候什么也没有做。
本来直接用(setenv "QnewTemplate" "test.dwt") 是可以的
但是我写成了(setenv "qnewTemplate" "test.dwt")导致这个变量跑到了别的地方去了, 没有起到他应该有的作用
到这里去了:........R18.0/ACAD-8001:804/FixedProfile/General
用(getenv"qnewTemplate")可以得到"test.dwt" ,是不是说可以用这个方式来保存少量的变量到注册表,很方便修改和提取,就是不知道会不会有什么害处?


东升铮 发表于 2022-2-12 05:12:11

一、:如果你坚持要用这个方法获取、经常需要用到这个的可以另外定义一个函数把字符串全部返回大写给他设置、
不经常用那就这样吧、毕竟谁天天去弄这个变量、(出门带了一百块钱RMB,回来带了一百块钱日元,老婆肯定骂)
二、:这个方法是可以保存少量的、前提是不能与内部变量冲突。既然这么麻烦、爱卿为何不直接换注册表其他位置保存呢?也就定义一个位置而已、

菜卷鱼 发表于 2022-2-12 08:53:30

setenv 跟getenv 一般是用来设置、读取电脑环境变量的
但是我一直都用这对函数去储存需要记忆的参数,这样储存的参数重启电脑还在,没有发现害处。
目前觉得唯一的弊端就是参数的值只能是字符串。
比如 (setq sata 5) , 重启电脑,这个 sata 值 百分之一百没了
但是(setenv "sata" "5") ,重启电脑还在

getenv 电脑的大部分系统变量都能读取到。我没有进行过深入研究,但是觉得只要不与以下的冲突,我觉得不会有问题。
你自己可以测试一下 ,例如 (getenv "ALLUSERSPROFILE"), (getenv "APPDATA")
WINDOWS系统
%ALLUSERSPROFILE% 局部 返回所有“用户配置文件”的位置。
%APPDATA% 局部 返回默认情况下应用程序存储数据的位置。
%CD% 局部 返回当前目录字符串。
%CMDCMDLINE% 局部 返回用来启动当前的 Cmd.exe 的准确命令行。
%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME% 系统 返回计算机的名称。
%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。
%DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。
%ERRORLEVEL% 系统 返回使用过的命令的错误代码。通常用非零值表示错误。
%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。
%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。
%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值的设置。用户主目录是在“本地用户和组”中指定的。
%LOGONSEVER% 局部 返回验证当前登录会话的域控制器的名称。
%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。
%OS% 系统 返回操作系统的名称。Windows 2000 将操作系统显示为 Windows_NT。
%PATH% 系统 指定可执行文件的搜索路径。
%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。
%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值: x86,IA64。
%PROCESSOR_IDENTIFIER% 系统 返回处理器说明。
%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。
%PROCESSOR_REVISION% 系统 返回处理器修订号的系统变量。
%PROMPT% 局部 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
%SYSTEMDRIVE% 系统 返回包含 Windows XP 根目录(即系统根目录)的驱动器。
%SYSTEMROOT% 系统 返回 Windows XP 根目录的位置。
%TEMP% and %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其它应用程序则需要 TMP。
%TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。
%USERDOMAIN% 局部 返回包含用户帐户的域的名称。
%USERNAME% 局部 返回当前登录的用户的名称。
%UserProfile% 局部 返回当前用户的配置文件的位置。
%WINDIR% 系统 返回操作系统目录的位置。

muwind 发表于 2022-2-12 23:02:30

嗯 谢谢:lol
页: [1]
查看完整版本: 关于setenv疑问