当前位置: 首页 > article >正文

CMD批处理一些冷门命令,编写windows脚本常用?

场景1:

        考虑一种情况,需要使用变量对变量循环替换这个时候,如果不加以一些特殊的设置,很有可能出现与预设的结果不相符的情况,这个时候可以通过设置这样一个命令来避免这个问题。

        解决方式: 

setlocal enabledelayedexpansion 

        用于启用延迟扩展(Delayed Expansion)模式,在启用延迟扩展后,! 可以用来获取变量的值。默认模式下,批处理执行代码块会提前替换变量的值,因此如果在一个代码块中改变了变量的值,这个时候改后的值在获取的时候一般都是错误的。启用延迟扩展后,可以使用 ! 来延迟获取变量的值,使得在代码块内部修改变量后,可以正确地获取到修改后的值。
        endlocal 用于结束由 setlocal 开始的本地环境,恢复到调用 setlocal 之前的环境状态。

        在批处理脚本中,setlocal 用于创建一个本地环境,这个本地环境中的变量和状态只对当前批处理文件有效,不会影响到其他批处理文件或者批处理文件的外部环境。endlocal 用于关闭这个本地环境,恢复到调用 setlocal 之前的环境状态。

场景2:

        考虑一个平常的中文显示乱码问题

        解决方式:

chcp 65001

        这行命令放在行首,设置读取方式为utf-8进行读取,后续的中文输出将不会进行换行。

场景3:

        考虑一个情况,我要写一个安装环境脚本,这个时候为了避免电脑重启,于是不修改注册表,使用手动修改的方式来即时生效,然后在脚本中通过start来启动一个需要设置的应用,然后我想要使得这个设置完以后,脚本在继续执行下去的话。

        解决方式:

        

start /wait notepad

设立一个wait选项这个时候,等记事本程序关闭以后,脚本自动继续向下执行。

这里来一个以上大杂烩的测试代码

chcp 65001 >nul
@echo off
rem 这里需要注意一个点,如果你有别的语言基础的话,可能会习惯性的为了美观在编程语句中加空格
rem 这里如果加了空格取值方式会不一样,要格外注意,我这里贴一个加空格的
rem 同样的代码就是因为加了空格导致输出不一样
set var = 231
echo %var%
echo 不加延迟拓展时的取值方式
set var=231
echo %var%
:: 你们可以尝试不加下面这行,会发现出现奇奇怪怪的问题
setlocal enabledelayedexpansion
echo 加延迟拓展时的取值方式
set var1=120
echo !var1!
for /l %%i in (1,1,5) do (
	set /a val =%%i
	@echo !val!
	@echo.
) 
@echo 我真牛逼
start /wait notepad
@echo 你真牛逼!
@pause

一些零碎的知识点。

用于提取文件夹的名字。

@echo off
setlocal enabledelayedexpansion

rem 设置要处理的文件夹路径
set "folderPath=D:\download"

rem 遍历文件夹
for /d %%i in ("%folderPath%\*") do (
    rem 获取文件夹名
    set "folderName=%%~nxi"
    echo !folderName!
    rem 清除字母
    set "folderNameWithoutLetters="
    for /L %%j in (0, 1, 9) do (
        set "folderName=!folderName:%%j=!"
    )

    rem 重命名文件夹
    ren "%%i" "!folderNameWithoutLetters!"
)

endlocal
@pause


http://www.kler.cn/a/582996.html

相关文章:

  • java每日精进 3.11 【多租户】
  • ST电机库电流采样 三电阻单ADC
  • Oracle VirtualBox安装CentOS 7
  • FFmpeg入门:最简单的音视频播放器(Plus优化版)
  • dns劫持是什么?常见的劫持类型有哪些?如何预防?
  • XML Schema 实例
  • 深入理解 HTML 链接:网页导航的核心元素
  • 【Deepseek基础篇】--v3基本架构
  • 初学者快速入门Python爬虫 (无废话版)
  • 从零开始的python学习(五)P75+P76+P77+P78+P79+P80
  • Linux ALSA 驱动核心知识点解析
  • OpenHarmony-分布式硬件关键技术
  • redis增加ip白名单
  • 【day11】智慧导览:AR内容加载性能指标
  • 电力行业中 对输电和配电的所有数据实现实时监测与控制
  • 四种 API 架构风格及对比
  • 监控推特信息并发送到微信
  • Qt常用控件之标签页控件QTabWidget
  • CTFHub-上传文件
  • HPC超算系列4——官方指南文档