• 批处理中的变量和参数(一)


    -------siwuxie095

       

       

       

    批处理中的变量分为两类:系统变量 和 自定义变量

       

    一、系统变量

    系统变量的值由系统将其根据事先定义的条件自动赋值,即

    这些变量系统已经给它们定义了值,不需要给它赋值,只需

    要调用即可。如下:

    %ALLUSERSPROFILE%

    本地

    返回 "所有用户" 配置文件的位置

    %APPDATA%

    本地

    返回默认情况下应用程序存储数据的位置

    %CD%

    本地

    返回当前目录字符串。也就是获得当前路径,并将其转换为字符串

    %CMDCMDLINE%

    本地

    返回用来启动当前的 Cmd.exe 的准确命令行

    %CMDEXTVERSION%

    系统

    返回当前的 "命令处理程序扩展" 的版本号

    %COMPUTERNAME%

    系统

    返回计算机名称

    %COMSPEC%

    系统

    返回命令行解释器可执行程序的准确路径。也就是返回 cmd.exe 的路径,一般在 C:WINDOWSsystem32cmd.exe

    %DATE%

    系统

    返回当前日期字符串。和使用 date/t 效果一样

    %ERRORLEVEL%

    系统

    返回上一条命令的错误代码。通常用 0 表示正确,非0 表示错误

    %HOMEDRIVE%

    系统

    返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在 "本地用户和组" 中指定的

    %HOMEPATH%

    系统

    返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在 "本地用户和组" 中指定的

    %HOMESHARE%

    系统

    返回用户的共享目录的网络路径。基于主目录值而设置。用户主目录是在 "本地用户和组" 中指定的

    %LOGONSERVER%

    本地

    返回验证当前登录会话的域控制器的名称

    %NUMBER_OF_PROCESSORS%

    系统

    指定安装在计算机上的处理器数目(所有 CPU 的总核心数)

    %OS%

    系统

    返回操作系统名称

    %PATH%

    系统

    指定可执行文件的搜索路径。也就是在这些目录下的可执行文件 (不仅仅是.exe,可以用 echo %PATHEXT% 查看哪些属于可执行文件。)可以直接在开始-->运行里直接执行,当然也可以在命令提示符、批处理中直接执行。例如记事本文件位于 C:WINDOWSNOTEPAD.EXE ,那么我们点击 "开始-->运行,输入 NOTEPAD " 就可以打开记事本了。或者我们打开 CMD 窗口 ,直接输入 NOTEPAD 也可以打开记事本

    %PATHEXT%

    系统

    返回操作系统认为可执行的文件扩展名的列表

    %PROCESSOR_ARCHITECTURE%

    系统

    返回处理器的芯片体系结构。返回值为 x86 或 IA64 或 RISC。这些都是常见的架构 ,或者称作指令集。

    Windows 操作系统都是基于 x86 架构开发的,国产CPU 不是采用 x86 指令集 ,所以无法运行 Windows

    %PROCESSOR_IDENTFIER%

    系统

    返回处理器说明

    %PROCESSOR_LEVEL%

    系统

    返回计算机上安装的处理器型号

    %PROCESSOR_REVISION%

      

    返回处理器版本号

    %PROMPT%

    本地

    返回当前解释程序的命令提示符设置。由 Cmd.exe 生成

    %RANDOM%

    系统

    返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成

    %SYSTEMDRIVE%

    系统

    返回包含Windows server operation system根目录(即系统根目录)的驱动器

    %SYSTEMROOT%

    系统

    返回 Windows server operation system 根目录位置

    %TEMP% %TMP%

    系统

    用户

    返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP

    %TIME%

    系统

    返回当前时间字符串。使用与 time /t 命令相同的格式

    %USERDOMAIN%

    本地

    返回包含用户账户的域的名称

    %USERNAME%

    本地

    返回当前登录的用户的名称

    %USERPROFILE%

    本地

    返回当前用户的配置文件的位置

    %WINDIR%

    系统

    返回操作系统目录的位置

       

       

    win10系统,登录用户:siwuxie095,testx.bat保存在桌面,测试如下:

       

    1、%ALLUSERSPROFILE%

       

       

       

       

    2、%APPDATA%

       

       

       

       

    3、%CD%

       

       

       

       

    4、%CMDCMDLINE%

       

       

       

       

    5、%CMDEXTVERSION%

       

       

       

       

    6、%COMPUTERNAME%

       

       

       

       

    7、%COMSPEC%

       

       

       

       

    8、%DATE%

       

       

       

       

    9、%ERRORLEVEL%

       

       

       

       

    10、%HOMEDRIVE%

       

       

       

       

    11、%HOMEPATH%

       

       

       

       

    12、%HOMESHARE%

       

       

       

       

    13、%LOGONSERVER%

       

       

       

       

    14、%NUMBER_OF_PROCESSORS%

       

       

       

       

    15、%OS%

       

       

       

       

    16、%PATH%

       

       

       

       

    17、%PATHEXT%

       

       

       

       

    18、%PROCESSOR_ARCHITECTURE%

       

       

       

       

    19、%PROCESSOR_IDENTFIER%

       

       

       

       

    20、%PROCESSOR_LEVEL%

       

       

       

       

    21、%PROCESSOR_REVISION%

       

       

       

       

    22、%PROMPT%

       

       

       

       

    23、%RANDOM%

       

       

       

       

    24、%SYSTEMDRIVE%

       

       

       

       

    25、%SYSTEMROOT%

       

       

       

       

    26、%TEMP%

       

       

       

       

    27、%TMP%

       

       

       

       

    28、%TIME%

       

       

       

       

    29、%USERDOMAIN%

       

       

       

       

    30、%USERNAME%

       

       

       

       

    31、%USERPROFILE%

       

       

       

       

    32、%WINDIR%

       

       

       

       

       

       

       

    应用:

    如:利用 %PROCESSOR_ARCHITECTURE% 判断当前计算机是几位的

    @echo off

    if "%PROCESSOR_ARCHITECTURE:~0,3%" equ "x86" (echo 32位计算机) else echo 64 位计算机

    pause>nul

       

    sublime中:

       

       

    运行一览:

       

       

       

       

    如:利用系统变量实现清理系统垃圾

    @echo off

    title 清除 Windows 10 系统垃圾

    del /f /s /q %systemdrive%*.tmp

    del /f /s /q %systemdrive%*._mp

    del /f /s /q %systemdrive%*.log

    ::帮助的临时文件

    del /f /s /q %systemdrive%*.gid

    ::丢失簇的恢复文件

    del /f /s /q %systemdrive%*.chk

    ::旧备份文件

    del /f /s /q %systemdrive%*.old

    del /f /s /q %systemdrive% ecycled*.*

    ::临时备份文件

    del /f /s /q %windir%*.bak

    ::删除上网预读信息

    del /f /s /q %windir%prefetch*.*

    ::直接删除 C:Windows emp 文件夹 ,并新建 temp 文件夹。

    rd /s /q %windir% emp & md %windir% emp

    ::删除用户名下的 cookies 文件夹内容。

    del /f /q "%userprofile%cookies*.*"

    ::删除最近浏览文件的快捷方式

    del /f /q "%userprofile% ecent*.*"

    ::清除用户临时页面文件

    del /f /s /q "%userprofile%Local SettingsTemporaryInternetFiles*.*"

    ::清除用户临时文件

    del /f /s /q "%userprofile%Local SettingsTemp*.*"

    del /f /s /q "f:Temporary Internet Files*.*"

    del /f /s /q "%userprofile% ecent*.*"

    ::删除 C 盘安装信息文件

    del /f /s /q "C:Program FilesInstallshield InstallationInformation*.*"

    ::删除升级补丁信息

    del /f /s /q "C:WINDOWSSoftwareDistributionDownload*.*"

    ::删除历史记录

    rd /s /q "%userprofile%Local SettingsHistory"

    dir %SystemRoot%$*$ /ad/b >%SystemRoot%vTmp.txt

    for /f %%a in (%SystemRoot%vTmp.txt) do rd /s /q

    "%SystemRoot%\%%a"

    echo 清除系统垃圾完成 & pause

       

    sublime中:

       

       

       

    运行一览:

       

       

       

       

    如:用%RANDOM% 获取随机数

    注:%random% 可以随机获得 0 到 32767 之间的任意

    一个十进制数字(32767 用二进制表示为 15 个 1)

    @echo off

    echo %random%

    pause

       

    sublime中:

       

       

    运行一览:

       

       

    注意,下面的程序只能获得一个随机数

    (即每次执行获得10个一样的随机数):

    @echo off

    for /l %%i in (1,1,10) do echo %random%

    pause

       

    sublime中:

       

       

    运行一览:

       

       

       

       

    必须使用延迟变量:

    @echo off

    setlocal enabledelayedexpansion

    for /l %%i in (1,1,10) do echo !random!

    pause

       

    sublime中:

       

       

    运行一览:

       

       

       

       

    产生指定区间 [min,max] 里的随机数,采用格式:

    %random%%%(max-min+1)+min

       

    如:产生 1 10 的随机数字

    @echo off

    set /a num=%random%%%10+1

    echo %num%

    pause

       

    sublime中:

       

       

    运行一览:

       

       

       

       

    如:在当前目录下的 test.txt 文本文件中随机读取一行数据

    (test.txt 以某软件的使用说明作测试)

    @echo off

    setlocal enabledelayedexpansion

    for /f "tokens=*" %%i in (test.txt) do (set /a h+=1 & set r!h!=%%i)

    set /a s=%random% %% h+1

    echo !r%s%!

    pause

       

    @ECHO OFF

    SETLOCAL ENABLEDELAYEDEXPANSION

    FOR /F "TOKENS=*" %%i IN (TEST.TXT) DO (SET /A h+=1 & SET r!h!=%%i)

    SET /A s=%RANDOM% %% h+1

    ECHO !r%s%!

    PAUSE

       

    sublime中:

       

       

       

       

    运行一览:

       

       

       

       

       

       

       

    随机取值程序:

    @echo off

    mode con cols=84 lines=36

    ::设置窗口大小

    title 随机取值程序

    ::设置窗口标题

    color 9f

    ::设置窗口颜色

    set num=0

    ::取值次数计数器归零

    :begin

    set k=

    echo. & echo.

    echo %k% 随机取值程序

    echo. & echo.

    set /p a=%k%请输入目标数字:

    set /p min=%k%请输入取值范围最小值:

    set /p max=%k%请输入取值范围最大值:

    set /a count=max-min+1

    ::计算取值范围大小

    if %max% lss %min% (

    echo.

    echo %k%取值范围最大值小于最小值,输入错误,请重新输入。

    pause > nul

    cls

    goto begin

    )

    echo.

    echo %k%您输入的数字是 %a%

    echo %k%取值范围是 [ %min% , %max% ]

    if %a% lss %min% goto tuichu

    if %a% gtr %max% goto tuichu

    ::如果目标数字在取值范围之外,返回并重新输入

    echo. & echo.

    echo %k%按任意键开始随机取值

    echo.

    pause > nul

    echo ----------------------------------------------------------------------------------

    :xun

    set /a b=%RANDOM%%%(max-min+1)+min

    ::在取值范围内随机取值

    set /a panduan=%num%%%10

    if %panduan% == 0 echo.

    ::每输出 10 个数字,就回车换行

    set /a num+=1

    ::计数器加 1

    set c= %b%

    set /p=%c:~-7% <nul

    if %b% == %a% (

    echo. & echo. & echo.

    echo ----------------------------------------------------------------------------------

    echo %k%本次从 [%min% , %max%] %count%个数字中随机取值%num%次,出现了目标数字%a%

    echo. & echo.

    echo 按任意键退出

    pause > nul

    exit

    ) else (goto xun)

    :tuichu

    echo.& echo.

    echo %k%目标数字在取值范围之外,无法取值,请重新输入

    pause > nul

    cls

    goto begin

       

    sublime中:

       

       

       

       

       

    运行一览:

       

       

       

       

       

    【made by siwuxie095】

       

       

       

       

       

       

       

       

       

       

       

       

       

  • 相关阅读:
    for ,foreach ,map 循环的区别
    PHP生成验证码图片
    Google自动打印
    MYSQL定时任务
    PHP 多维数组将下标从0开始
    MYSQL常用函数
    PHP 手机短信发送验证码
    php 限制标题长度,将一个中文转换成一个字符
    MYSQL 模糊查询
    MYSQL AND 和 OR
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6351210.html
Copyright © 2020-2023  润新知