• bat脚本以管理员身份运行时,目录没有定位到当前目录问题的解决方法


    我们时常使用bat脚本去处理一些事情,有事bat中的命令需要以管理员的身份运行,但是运行后文件的目录自动定位到了C:Windowssystem32下,而不再脚本所在的目录下。

    这是我的文件目录,WindosActive.bat脚本会读取WindosSerial.ini中的文件信息,但是脚本中的有些命令要以管理员的身份才可以正常运行。如果直接右键管理员运行的目录会定位到C:Windowssystem32。然后提示WindosSerial.ini文件不存在。

    我们用echo %cd% 输出当前目录:

    那么有没有其他方法呢?

    使用变量扩充 的方法,读取出当前文件的目录,然后cd过去:

    @echo off 
    if not "%OS%"=="Windows_NT" exit
    title WindosActive
    
    echo 当前目录:%cd%
    echo 变量扩充: %~dp0
    cd /D %~dp0
    echo 更改后的目录:%cd%
    pause

    有关其他变量扩充的知识:

    @echo off 
    if not "%OS%"=="Windows_NT" exit
    title WindosActive
    
    echo.
    echo 将 ^%%I 扩充到一个完全合格的路径名
    echo %~f0
    echo.
    echo 仅将 ^%%I 扩充到一个驱动器号 
    echo %~d0
    echo.
    echo 仅将 ^%%I 扩充到一个路径 
    echo %~p0
    echo.
    echo 仅将 ^%%I 扩充到一个驱动器和路径 
    echo %~dp0
    echo.
    echo 仅将 ^%%I 扩充到一个文件名 
    echo %~n0
    echo.
    echo 仅将 ^%%I 扩充到一个文件扩展名 
    echo %~x0
    echo.
    echo 扩充的路径只含有短名 
    echo %~s0
    echo.
    echo 将 ^%%I 扩充到文件的文件属性 
    echo %~a0
    echo.
    echo 将 ^%%I 扩充到文件的日期/时间 
    echo %~t0
    echo.
    echo 将 ^%%I 扩充到文件的大小 
    echo %~z0
    echo.
    echo 查找列在路径环境变量的目录,并将 ^%%I 扩充到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串 
    echo %~$PATH:0
    echo.
    echo 组合扩展:
    echo 驱动器+路径+文件名 +文件扩展名 +文件属性 +日期/时间 +文件的大小 
    echo %~dpnxatz0
    echo.
    echo 驱动器+路径+文件名 +文件扩展名 +文件属性 +日期/时间 +文件的大小+ 短名 
    echo %~dpnxatzs0
    echo.
    
    pause

    其中的变量扩充可以随意组合。

  • 相关阅读:
    爬取中华网科技新闻
    爬取斗鱼图片
    链表09-开发可用链表(将链表变为对象数组)
    链表08-开发可用链表(数据删除)
    链表07-开发可用链表(修改指定索引内容)
    链表06-开发可用链表(根据索引取得数据)
    链表05-开发可用链表(判断某一个数据是否存在)
    链表05-开发可用链表(判断是否为空链表)
    链表04-开发可用链表(取得链表中保存的元素个数)
    链表03-开发可用链表(实现数据增加)
  • 原文地址:https://www.cnblogs.com/feiquan/p/10368960.html
Copyright © 2020-2023  润新知