;;驱动器、目录、文件、和注册表
;;★★★01.获取并创建驱动器盘符组成的表★★★
(setq Drives (vlax-get-property (vlax-create-object "Scripting.FileSystemObject") "Drives")) ;;获取驱动器集合
(setq DrivesPathLst '()) ;;设定存储驱动器盘符路径的空表

(vlax-for tempt Drives ;;遍历驱动器集合获取驱动器路径属性并放入驱动器路径存储表中
    (setq DrivesPathLst (cons (vlax-get-property tempt "Path") DrivesPathLst))
)

(setq DrivesPathLst (reverse DrivesPathLst)) ;;表反转,以使起顺序为正确的C盘,D盘,E盘的顺序 返回 ("C:" "D:" "E:")

;;要点
;;驱动器路径的获取依赖于创建Scripting.FileSystemObject对象

;;★★★02.目录与文件全路径名操作★★★
(vl-directory-files "e:" "*.*" 0) ;;获取文件(包含扩展名)和目录
(vl-filename-base (getfiled "文件" "d:\\" "" 2)) ;;去掉文件路径和扩展名只去文件名"Setup1.2.1.1"
(vl-filename-directory (getfiled "文件" "d:\\" "" 2)) ;;返回路径 返回 "D:\\"
(vl-filename-extension (getfiled "文件" "d:\\" "" 2)) ;;返回扩展名 返回 ".zip"
(vl-file-size (getfiled "文件" "d:\\" "" 2)) ;;返回文件所占内存的大小Byte为单位
(vl-file-copy (getfiled "文件" "d:\\" "" 2) "e:\\1.doc");;将某文件复制为e盘下,名为1.doc (注意全路径和扩展名不可少)
(vl-file-directory-p "d:\\1") ;;指定字符串是不是存在的目录,存在则返回T,否则返回nil
(vl-file-systime "d:\\1.txt") ;;返回文件最后修改的时间 返回 (2015 1 6 24 14 33 38 796)
(vl-filename-mktemp "d:\\myapp.txt") ;;创建临时唯一文件名,引号中是文件模式,程序根据它创建,返回 "d:\\myapp004.txt"
(vl-mkdir "c:\\mydirectory");;创建目录

;;要点
;;文件名全路径中要么用\\分级要么用/分级
;;所谓文件名或者文件全路径都是字符串
;;上述函数都是对字符串的操作,对目录和文件名、文件扩展名的操作

;;★★★03.文件描述符与文件的读写操作★★★
;;文件的读
(setq filePath (getfiled "打开文件" "d:\\" "txt" 2)) ;;获取要打开的文件路径
(setq fileDescriptor (open filePath "r")) ;;根据文件路径以读的方式打开文件将值放入文件描述符变量中用于后面操作

(while (setq fileRowStr (read-line fileDescriptor)) ;;打印文件中每一行,每循环一次文件描述符就到下一个读取到的位置,遇文件结束符返回nil结束
    (print fileRowStr)
)

(close fileDescriptor) ;;打开的文件记得关闭(用文件描述符关闭)

;;文件的写
(setq filePath (getfiled "打开文件" "d:\\" "txt" 2)) ;;获取要打开的文件路径
(setq fileDescriptor (open filePath "w")) ;;根据文件路径以写的方式打开文件将值放入文件描述符变量中用于后面操作

(setq i 1)
(repeat 9 ;;循环按顺序写入1到9的数字到文件中
    (princ (itoa i) fileDescriptor)
(setq i (1+ i))
)

(close fileDescriptor) ;;打开的文件记得关闭(用文件描述符关闭)

;;转义符与特殊字符
一些字符需要使用转义符来表示其本来的符号,比如引号" 和 转义符号\ ,注意斜杆/不需要用转义符号来修饰,而转义符号需要用两个反斜杆 \\ 表示一个斜杆\ 见下表:

向文件中写入:(setq str_filePath (vl-registry-read "HKEY_CURRENT_USER\\Test-Helchan" "new"))
(princ"(setq str_filePath (vl-registry-read \"HKEY_CURRENT_USER\\\\Test-Helchan\" \"new\"))\n" fileDescriptor)  
后面的\n是换行,表示下一次就从下一行继续写。

;;获取拖拽插件后获得的目录路径
(print)
(setq 上次命令行 (getvar "LASTPROMPT"))
(print 上次命令行)

;;要点
;;文件的读写都依赖于文件描述符
;;文件描述符指向文件的位置随读和写操作移动

;;★★★04.注册表的读写操作★★★
;;在HKEY_CURRENT_USER中创建一个目录Test-Helchan
(vl-registry-write "HKEY_CURRENT_USER\\Test-Helchan")

;;在"HKEY_CURRENT_USER\\Test-Helchan"目录中创建文件"new"
(vl-registry-write "HKEY_CURRENT_USER\\Test-Helchan" "new")

;;在"HKEY_CURRENT_USER\\Test-Helchan"目录下的"new"文件中写入值"123"
(vl-registry-write "HKEY_CURRENT_USER\\Test-Helchan" "new" "123")

;;读取"HKEY_CURRENT_USER\\Test-Helchan"目录下"new"文件中的值
(vl-registry-read "HKEY_CURRENT_USER\\Test-Helchan" "new")

;;删除"HKEY_CURRENT_USER\\Test-Helchan"目录下"new"文件
(vl-registry-delete "HKEY_CURRENT_USER\\Test-Helchan" "new")

;;删除"HKEY_CURRENT_USER\\Test-Helchan"目录
(vl-registry-delete "HKEY_CURRENT_USER\\Test-Helchan")

;;列出指定注册表目录下级的名称组成的字符串表
(vl-registry-descendents "HKEY_CURRENT_USER")

------end------

【Visual Lisp】驱动器、目录、文件和注册表的更多相关文章

  1. 【读书笔记】C#高级编程 第二十四章 文件和注册表操作

    (一)文件和注册表 对于文件系统操作,相关的类几乎都在System.IO名称空间中,而注册表操作由System.Win32名称空间中的类来处理. (二)管理文件系统 System.MarshalByR ...

  2. x64系统的判断和x64下文件和注册表访问的重定向——补记

    原来的地址 x64系统的判断和x64下文件和注册表访问的重定向(1) x64系统的判断和x64下文件和注册表访问的重定向(2) x64系统的判断和x64下文件和注册表访问的重定向(3) 之前在(3)里 ...

  3. 删除Oracle文件、注册表

    用Oracle自带的卸载程序不能从根本上卸载Oracle,从而为下次的安装留下隐患,那么怎么才能完全卸载Oracle呢?那就是直接注册表清除,步骤如下: 1. 开始->设置->控制面板-& ...

  4. MFC学习 文件操作注册表操作

    c读写文件 void CFileView::OnRead() { FILE *pFile = fopen("1.txt", "r"); /*char ch[10 ...

  5. 【Visual Lisp】人机交互与数据处理(表除外)-lisp

    ;;本专题所讲述的内容是人机交互以及常规数据处理技术;;★★★01.人机交互★★★;;△△△键盘输入交互△△△(getint "请输入整数");;从键盘输入整数,如果不是整数则重复 ...

  6. 获取Host文件权限 注册表导入

    Windows Registry Editor Version 5.00 ;取得文件修改权限 [HKEY_CLASSES_ROOT\*\shell\runas] @="管理员权限" ...

  7. Inno setup complier将文件添加注册表

    [Registry] Root: HKCR; Subkey:.; ValueType: string; ValueName: ; ValueData:"264file" Root: ...

  8. 如何用.reg文件操作注册表

    Windows Registry Editor Version 5.00 ;删除值 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpi ...

  9. C++ 执行 cmd 命令 删除文件 删除注册表项

    #include <Windows.h> WinExec("cmd /C \"del C:\\Windows\\secretWin.ini\"",S ...

随机推荐

  1. VPS及LNMP(一)

    1.试用了搬瓦工.interserver.天翼云.网安互联之后,分别写下感受: 前两个是美国服务器,天翼云是国内服务器,网安互联是香港主机. a.搬瓦工非常便宜,512M的1年9.99刀,但是用了之后 ...

  2. EBS R12重启后无法进入登录页面

    应用启动正常,但无法进入登录页面: The webpage cannot be found HTTP 404 ... No known changes had been made and the Mi ...

  3. Mantis 1.2.19 on Windows Server 2012 r2 datacenter 安装及配置随笔

    一.前言 新的小团队需要搭建一个缺陷管理的工具,之前用过bugfree,感觉比较适合,但是 禅道不太适合,放弃之,于是又百度推荐的: .JTrac13.BugNet14.BugOnline15.eTr ...

  4. Android开发--布局

    一:LinearLayout  1.线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上.每一个LinearLayout里面又可分为垂直布局(android:orie ...

  5. Inside The C++ Object Model - 01

    前言 1.Foundation项目是一个定义大系统开发模型的项目,又叫Grail. 2.Grail中编译器被分为:parser(语法分析)->type checking -> simpli ...

  6. PHP面向对象的标准

    (1)所有数据都应该隐藏在所在的类的内部. (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者. (3)尽量减少类的协议中的消息. (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深 ...

  7. RMQ(范围最值问题)算法学习

    RMQ算法适合求解对一个数组多次查询给定范围内的最值. 预处理操作: 令d[i,j]表示从i开始,长度为2^j的一段元素的最值,可以用递推公式写出d[i,j] = min{ d[i][j-1], d[ ...

  8. node.js入门及express.js框架

    node.js介绍 javascript原本只是用来处理前端,Node使得javascript编写服务端程序成为可能.于是前端开发者也可以借此轻松进入后端开发领域.Node是基于Google的V8引擎 ...

  9. java与微信企业号交互

    微信企业号接收消息(使用SpringMVC): http://blog.csdn.net/omsvip/article/details/39480577 微信企业号api: http://qydev. ...

  10. Java NIO教程 Buffer

    缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存,这块内存中有很多可以存储byte(或int.char等)的小单元.这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问 ...