zoukankan      html  css  js  c++  java
  • 【Visual Lisp】驱动器、目录、文件和注册表

    ;;驱动器、目录、文件、和注册表
    ;;★★★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------

  • 相关阅读:
    JavaScript function (简单总结)
    JavaScript 数组 (简单总结)
    yum update 和 yum upgrate 区别
    git clone警告,提示Warning:Permission denied (publickey)
    ''退格符号笔记
    MySQL Workbench导出Model提示['ERROR 1064 (42000): You have an error in your SQL syntax....syntax to use near 'VISIBLE']
    《Python编程从入门到实践》--- 学习过程笔记(3)列表
    《Python编程从入门到实践》--- 学习过程笔记(2)变量和简单数据类型
    Windows+MyEclipse+MySQL【连接数据库报错caching_sha2_password】
    测试 | 让每一粒尘埃有的放矢
  • 原文地址:https://www.cnblogs.com/Helchan/p/4245948.html
Copyright © 2011-2022 走看看