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

devtools/2025/3/18 2:14:11/

场景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 enabledelayedexpansionrem 设置要处理的文件夹路径
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

这边给一个批处理的类数组操作的处理,展示了不同的分割方式。

@echo off
set temp1=sad,dsad,jisdf,dsf
for %%i in (%temp1%) do (@echo %%i
)
set temp1=sad dsad jisdf dsf
for %%i in (%temp1%) do (@echo %%i
)
set temp1=sad;dsad;jisdf;dsf
for %%i in (%temp1%) do (@echo %%i
)
set temp1=sad.dsad.jisdf.dsf
for %%i in (%temp1%) do (@echo %%i
)
pause
PowerShell Set-NetAdapterAdvancedProperty -Name "CCD101" -RegistryKeyword "*JumboPacket" -RegistryValue 9014 
@pause

其实一些对于高级属性的操作更多是在powershell中去执行,在cmd中的有些操作会比较受限。

其次的话,在cmd中有一个针对上一条命令执行状态信号量,可以通过%errorlevel%该信号量去判断上一个是否执行成功来做出下一步操作。

一般来说,上一条命令的执行结果返回的值只有两个,"成功”用0表示,“失败”用1表示。

但是的话,实际上errorlevel的返回值可以在0~255之间,在一个命令执行结束可以表示不同的状态

一般实际应用的话用0和非0来判断的话会比较好。


http://www.ppmy.cn/devtools/167965.html

相关文章

鸿蒙 Next 实现单例

鸿蒙 Next 实现单例 在鸿蒙 Next 开发中,单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。本文将详细介绍如何在鸿蒙 Next 中实现单例模式,并提供几种常见的实现方式。 一、单例模式的实现方式…

自动化测试 | Python+PyCharm+Google Chrome+Selenium 环境安装记录

目录 环境版本 浏览器与驱动 Python 安装 测试 PyCharm 安装 开启软件 开始破解 Selenium 安装 测试 自动化的其实就是模拟手工点击的方式 环境版本 Python:3.11.8 PyCharm:2021.1.3 Selenium:x.x 浏览器与驱动 114.0.5735.90 …

Django部署Filemanagement

Pycharm搭建项目安装虚拟环境 mysqlclient对mysql的安装,配置有要求 pymsql伪装成mysqlclient,pymysql可以操纵mysql pip install pymysql操作sql5.7 mysql8.0会出现与pycharm不兼容问题,会报错,所以降到5.7 # 进入mysql 需要…

Chrome 扩展开发 API实战:Tabs(九)

1. 引言 本文为您提供 chrome.cookies API 的全面指南,包括其功能、使用方法以及详细示例。无论您是初学者还是经验丰富的开发者,这篇文章都能帮助您高效管理和操作 Chrome 扩展中的 cookies。 2. 权限声明 在 manifest.json 文件中声明所需的权限&am…

【漫话机器学习系列】136.随机变量(Random Variable)

详解随机变量(Random Variable) 1. 引言 在概率论和统计学中,随机变量(Random Variable)是一个基本概念,它描述了实验结果的不确定性。简单来说,随机变量是一个数值变量,它的取值依…

机器学习 [白板推导](N)[谱聚类、前馈神经网络]

​ 21. 谱聚类(Spectral Clustering) 21.1. 背景 ​  在高斯混合模型中,假设样本有多个类别,每个类内数据遵从不同的高斯分布。但在某些数据中(如下图),其并不具有类似高斯分布的特性&…

股指期货有卖不出去的时候吗?

在股指期货的交易世界里,很多人都有这样的疑问:股指期货会不会有卖不出去的时候呢?答案是会的,下面咱们就来详细唠唠为啥会出现这种情况。 市场极端行情下难以卖出 1.跌停限制:股指期货和股票一样,也有涨…

深度学习部署到小程序

1.小程序 2.安装环境,创建虚拟环境 3.深度学习小程序版环境安装-CSDN博客