• [技术干货] 批处理字符串截取的实现【转】
    在批处理中,set的功能有点繁杂:设置变量、显示环境变量的名及值、做算术运算、等待用户的输入、字符串截取、替换字符串,是我们常用的命令之一。在字符串截取方面,新手因为没能注意到偏移量的问题,很容易提取到错误的字符串,因此,特开此帖,详细解释 set 截取字符的用法。我们先来看一个例子:set str=123456789现在,我需要提取变量 str 中的第一个字符,那么,该怎么写命令呢?set var=%str:~1,1%?我想,这很可能是很多粗懂set用法的新手们的第一反应,实际上,这条语句提取到的是字符"2",并不是我们想要的"1",也就是说,set var=%str:~1,1% 提取到的是字符串第二位上的字符,而不是第一位上的,这是什么原因呢?原来,set 命令从左到右做字符截取的时候,是以整个字符串的第一个字符为起点来计算要截取字符的偏移量的,也就是说,截取字符的时候,set 会计算提取后字符串的第一个字符相对于整个字符串第一个字符偏移了多少字符的长度。请注意,set 是按偏移量而不是字符的绝对位置来提取字符的,这一点非常重要。只要牢记这一点,大家在截取字符的时候,将会不再在这个问题上犯错。现在,我们可以把截取字符的命令用一条语句模式来表示,那就是:set var=%str:~偏移量,长度%。我们来详细解读这条语句模式的含义:首先,我们需要把要操作的字符串赋予一个变量,在这条语句中,是把字符串赋予了变量 str ;然后,我们需要确定一下我们想提取的字符串是哪一部分,比如说要提取字符串第2个字符及其之后的3个字符,或是提取字符串第5个字符及其之后的4个字符……,最后,计算偏移量及长度,比如要提取字符串第2个字符及其之后的3个字符,那么,也就是提取相对于第一个字符偏移量为1、提取后的字符串长度为4的字符串,写成语句就是:set var=%str:~1,4%。到目前为止,我们只谈到了很简单的截取操作,如果碰到比较复杂的提取需求,比如:提取第2个字符及其之后的所有字符、提取最后的3个字符、提取倒数第2个及其之前的3个字符、提取除了最后4个字符的字符串……那又该怎么办呢?别着急,set 命令在设计的时候就已经充分考虑到我们的复杂需求,只要对刚才我们提到的字符截取语句稍做改动,就可以很轻松地完成任务。我们知道,数字的正负可以用±符号来表示,同样的,方向的正反也可以用±来标注。在 set 做字符截取的时候,引入了±符号来表示字符截取的方向:从左到右截取为+,从右到左截取为-,所以,set var=%str:~1,4% 也可以写成 set var=%str:~+1,+4% ,只是在从右到左截取的时候,情况发生了一点变化,那就是:偏移量的起点以整个字符串最后一个字符的后一位来计算。现在,我们可以来回答上一段中提出的一些问题:提取最后的3个字符:set var=%str:~-3%提取倒数第2个及其之前的3个字符:set var=%str:~-5,4%提取除了最后4个字符的字符串:set var=%str:~0,-4%看了上面三种需求的代码,大家可能又会产生新的疑问:第一条怎么只有一个数字啊?第三条最后一个数字是负号,又表示什么意思呢?原来,在 set var=%str:~偏移量,长度% 这样的语句中,如果没有逗号及其之后的长度,就表示截取偏移量位置上及其之后的所有字符,如果长度的值为负数,则表示抛弃最后几个字符。现在,我们可以对任意位置上的字符做提取工作了(假设 set str=123456789):① 提取1: set var=%str:~0,1% 或 set var=%str:~0,-8% 或 set var=%str:~-9,1%② 提取2: set var=%str:~1,1% 或 set var=%str:~1,-7% 或 set var=%str:~-8,1%③ 提取9: set var=%str:~8,1% 或 set var=%str:~8% 或 set var=%str:~-1,1% 或 set var=%str:~-1%④ 提取123:set var=%str:~0,3% 或 set var=%str:~0,-6% 或 set var=%str:~-9,3%⑤ 提取234:set var=%str:~1,3% 或 set var=%str:~1,-5% 或 set var=%str:~-8,3%⑥ 提取789:set var=%str:~6,3% 或 set var=%str:~6% 或 set var=%str:~-3,3% 或 set var=%str:~-3%最后,我们来总结一下字符截取的规律:1、截取字符串可以用 set var=%str:~数值1,数值2% 这样的语句来实现;2、字符的截取是以偏移量来计算的,而不是以字符的绝对位置来计算;3、当数值1为正数时,表示从左到右截取;当数值1为负数时,表示从右到左截取;4、当数值2为正数时,表示要截取后字符串的长度;当为负数时,表示要抛弃的最后几个字符长度;5、当数值2及其之前的逗号不存在时,表示截取的是第(数值1+1)个字符及其之后的所有字符;案例1:从左往右截取,舍弃前4个字符set var=123456789 echo %var:~4% pause ----------------------------- 运行结果: 56789案例2:从左往右截取,只要前3个字符set var=123456789 echo %var:~0,3% pause ----------------------------- 运行结果: 123案例3:从右往左截取,截取3个字符set var=123456789 echo %var:~0,-3% pause ----------------------------- 运行结果: 123456案例4:从左往右舍弃第1位,从右往左舍弃3位set var=123456789 echo %var:~1,-3% pause ----------------------------- 运行结果: 123456~ 波浪号后面的数字:为正数表示舍弃变量的前位;, 逗号后面的数字为正数表示取变量的舍弃以后的前几位;, 逗号后面为负数表示舍弃变量的后几位
  • [技术干货] 批处理删除指定文件或文件夹的实现【转】
    1. DEL1.1 DEL 的命令参数使用 del 命令能指定文件,Del (erase)[Drive:][Path]FileName指删除指定文件。指定要删除的文件或文件集的位置和名称。语法格式如下:del [Drive:][Path]FileName[ ...][/p] [/f] [/s] [/q] [/a[:attributes]]del 参数如下图所示:1.2 用 DEL 命令删除文件用 del 命令删除 15.doc新建一个文本文件13.txt 写入如下语句:保存,并将文件格式改为 bat;双击运行 13.bat,输入Y,回车,即可删除 15.doc 文件;1.3 在 cmd 中查看 DEL 的帮助在 cmd 中输入 del /?,能查询到 del 的参数信息;2. RD2.1 RD 的命令参数RD 是专门删除子目录的命令RMDIR 与 RD 功能相同,参数也相同;语法格式如下:12RMDIR [/S] [/Q] [drive:]pathRD [/S] [/Q] [drive:]path删除一个子目录必须同时满足以下两个条件:子目录为空;该子目录不是当前子目录;2.2 用 RD 删除文件夹用 RD 删除文件夹 bba保存,并把文件的后缀名改为 bat ;双击运行 14.bat 文件,即可删除 bba文件夹;
  • [技术干货] DOS批处理字符串截取【转】
    【字符串截取语法格式】  % VAR:~ [ m [ ,n ] ] %或者  !VAR: ~ [ m [,n ] ] ![  ] (方括号)表示可选两边的 %(或  ! )为变量取值标识符VAR 为变量名(不可缺少)符号 : 用于分隔变量名和说明部分符号 ~ 可以简单理解为“偏移”m 为 %VAR% 或 !VAR]! 中的字符偏移,如果从右向左,则字符的偏移从 0 始计数,即:其第一个字符的偏移是0;如果从左向右,则字符的偏移从 -1 开始计数,即:其最后一个字符的偏移是 -1),m 的缺省值为0。n 为将要截取字符串的长度,n 的缺省值为 0【语法功能】从变量值中截取字符(串) 【关于 m 的取值】 m 的取值可以是取正整数,也可以是负整数,下面举例说明:set "a=abcdefg"如果 m 的值大于取值范围的最大值时,则截取不到任何字符如果 m 的值小于取值范围的最小值时,则 m 取值为最小值示例:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】 ::demo.bat @echo off set "a=abcdef" echo 截取前的值: "%a%" :: -7 小于 取值范围最小值 -6,则m取值-6 set var=%a:~-7,2% echo 截取后的值: "%var%" echo  --------------------------------------------------- set "a=abcdef" echo 截取前的值: "%a%" :: 6 大于 取值范围最大值 5,则截取不到任何字符 set var=%a:~6,2% echo 截取后的值: "%var%"运行 C:\>demo截取前的值: "abcdef"截取后的值: "ab" ---------------------------------------------------截取前的值: "abcdef"截取后的值: ""C:\>【关于 n 的取值】 n 的取值可以是取正整数,也可以是负整数,下面举例说明: 1、在 %a:~m,n% 中,n 为正整数,则在 %a% 中,从偏移是 m 的字符(包括偏移是 m 的字符)开始,截取长度为 n 的所有字符。C:\>set a=abcdefg C:\>echo %a:~1,3% bcd C:\>在 %a:~m,n% 中,n 为正整数,如果截取的长度超出 %a% 中的长度,则截取至 %a% 的末尾字符(包括末尾字符)。 示例12345678:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】::demo.bat@echo offset "a=abcdef"echo 截取前的值: "%a%":: 8 超出 %a% 的字符最大偏移(5),则截取到末尾set var=%a:~1,8%echo 截取后的值: "%var%"运行 C:\>demo截取前的值: "abcdef"截取后的值: "bcdef"C:\>2、在 %a:~m,n% 中,如果 n 为负整数,则先除掉 %a% 末尾的 -n 个字符的,再进行截取操作:截取从偏移是 m 的字符(包括偏移是 m 的字符)开始,直到被截取原字符串的末尾字符(包括末尾字符)为止。C:\>set a=abcdefg C:\>echo %a:~0,-3% abcd C:\>“ %VAR:~ [ m [ ,n ] ]% ” 中,当 n  是负整数,但该负整数的绝对值超出 %VAR% 的字符个数时,则截取不到任何字符。示例 :: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】 ::demo.bat @echo off set "a=abcdef" echo 截取前的值: "%a%" :: n的绝对值超出 %a% 的字符个数 set var=%a:~-1,-7% echo 截取后的值: "%var%"运行 C:\>demo截取前的值: "abcdef"截取后的值: ""C:\>【关于被截取变量的值】 “ %VAR:~ [ m [ ,n ] ]% ” 中,字符串截取操作发生后,VAR 的值不会改变示例:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】 ::demo.bat @echo off set "a=abcdef" echo 截取前的值: "%a%" :: 从%a%第二个字符(其偏移为1)开始,截取2个字符 set var=%a:~1,2% echo 截取后的值: "%var%" :: 截取操作发生后,a的值不会改变 echo a的值: "%a%" 运行 C:\>demo截取前的值: "abcdef"截取后的值: "bc"a的值: "abcdef"C:\>【关于缺省值】 1、“ %VAR:~ [ m [ ,n ] ]% ” 中,n 的缺省值为 0示例:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】 ::demo.bat @echo off set "a=abcdef" echo 截取前的值: "%a%" :: 从%a%第二个字符(其偏移为1)开始,截取 0 (n的缺省值是0)个字符 set var=%a:~1,% echo 截取后的值: "%var%"
  • [技术干货] window使用bat批处理文件执行cmd命令【转】
    1、新建一个txt文本文档。然后在文档里面写入如下代码:cmd /k "cd /d E:\environment\ELK\logstash-6.5.4\bin&&logstash -f logstash.conf"意思是在路径E:\environment\ELK\logstash-6.5.4\bin执行logstash -f logstash.conf命令。路径、命令用&&隔开,命令之间也用&&隔开。如果还需要新增多条命令如Java-version则在logstash -f logstash.conf后面加&&java-version代码如下:cmd /k "cd /d E:\environment\ELK\logstash-6.5.4\bin&&logstash -f logstash.conf&&java-version"2、编辑好之后,可以另存为bat文件,或者直接改后缀; 3、双击运行,4、多种用法如果需要在多个黑框中执行命令,只需给前面加上 start ,代码如下start cmd /k "cd /d 路径&&命令1" start cmd /k "cd /d 路径&&命令1&&命令2"其中/k 表示执行完命令不关闭cmd命令窗口,如果想执行完关闭窗口,我们只需将 /k 更换为 /c 。代码如下start cmd /c "cd /d 路径&&命令1" start cmd /c "cd /d 路径&&命令1&&命令2"
  • [技术干货] cmd常用命令大全【转】
    小提示: 在本文中,我将向您展示可以在 Windows 命令行上使用的 40 个命令温馨提示:在本教程中学习使用适用于 Windows 10 和 CMD 网络命令的最常见基本 CMD 命令及其语法和示例为什么命令提示符有用命令提示符越来越受到没有 IT 背景的人的欢迎,因为它有助于通过几次单击自动执行几个乏味、平凡的任务。该界面允许用户运行多个命令,并且这些命令可以一个接一个地执行。事实证明,这在自动化领域是一个福音。与现代应用程序上可用的用户友好界面相比,大多数用户发现很难学习并且无法使用命令提示符,但是,命令提示符仍然可以在许多情况下使用。一、cmd是什么?CMD 代表 command (.command是给计算机程序的指令,它告诉程序必须做什么。它是大多数以Windows为操作系统的计算机中的应用程序,它有助于执行输入的命令。它也被称为命令提示符或Windows命令处理器。如何在窗口中打开CMD在Windows操作系统中打开命令提示符就像单击几下一样简单。第 1 步: 转到“开始”菜单。这位于屏幕的左下角。run!!。第 2 步: 在搜索栏中键入cmd,然后按 输入.那些喜欢Windows中的快捷方式的人也可以使用win + R将他们路由到RUN然后他们可以搜索cmd并按回车键。Windows 中这些命令最好的一点是它们不区分大小写,这使得它用户友好。现在让我们看看命令提示符中的一些基本和最常用的CMD命令。在下一节中,让我们看看带有语法的 CMD 命令列表。注意: 请务必注意,这些命令不区分大小写。基本 CMD 命令cd - 更改目录此命令允许用户从一个目录更改为另一个目录或从一个文件夹移动到另一个文件夹。语法: cd [/D] [驱动器:][路径]在目录中创建子目录时使用此命令语法: mkdir [:]示例:mkdir Neatsuki(创建一个目录名称“neatsuki”)ren语法: ren [<drive>:][<path>]<filename1> <filename2>示例 – ren /?ASSOC这是最基本和最常见的命令之一。它有助于将某些文件扩展名(顾名思义)与某些程序相关联。例如-当我们单击.doc(扩展名)时,计算机能够决定需要将其与Microsoft Word相关联。下面的屏幕截图显示了此命令工作原理的示例。语法: assoc [.exe[=[文件类型]]]例:assoc .txtFC 文件比较第二个最常用的命令是 FC,也称为文件比较。这是一个有趣的功能,允许比较随时间变化的文件。语法: FC /a [/c] [/l] [/lb<n>] [/n] [/off[line]] [/t] [/u] [/w] [/<nnnn>] [<drive1>:][<path1>]<filename1> [<drive2>:][<path2>]<filename2> FC/b [<drive1:>][<path1>]<文件名1> [<drive2:>][<path2>]<filename2>例: FC 1.txt 2.txtFC 命令还有其他一些参数,解释如下-参数- /a: 此参数有助于在完成 ASCII 比较时简洁输出。它显示差异列表中的第一行和最后一行。参数 /c:此参数忽略字母区分大小写的方面。参数 /w: 比较文件时,此参数非常有用。它通过在比较过程中压缩或删除空格来简化文件比较的过程。FC 命令中的此参数 /w 忽略行首和行尾的空格(如果有)。powercfg此命令提供计算机电源设置的报告。在计算机电源快速耗尽的情况下,此命令可以帮助产生完整的电源效率。该报告在一分钟内生成,对于检测可能影响系统性能的任何警告非常有用。语法: powercfg /option [参数] [/?]示例:powercfg /?此命令的另一个参数是 /list, /L。此参数列出所有电源。systeminfo此命令有助于获取与系统相关的信息,如网卡、Windows 操作系统或处理器的详细信息。此命令提供的信息易于理解。语法: systeminfo [/s <computer> [/u <domain>\<username> [/p <password>]]] [/fo {TABLE |列表 |CSV}] [/nh]例: C:\user\systeminfoCHKDSK此命令比 SFC 命令早一步。它允许扫描整个驱动器,而不是由SFC命令扫描核心系统文件。此命令需要以管理员身份运行,语法为 CHKDSK/f(驱动器名称)。语法:chkdsk [volume[[path]filename]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]] [/B] [/scan] [/spotfix]示例:chkdsk C:此命令的一些重要参数解释如下-参数 /f:此参数有助于修复磁盘上的任何错误。要使用此参数,必须锁定磁盘。参数 /v:此参数在检查磁盘的过程中显示所有目录中所有文件的名称。colorcolor:此命令有助于更改命令提示符窗口的背景和前景色。语法:color [[]]示例:color /?title语法:title [<字符串>]示例:title /?参数<字符串>:此参数有助于设置命令提示符的标题。它指定显示为命令提示符标题的文本。ROBOCOPY:此命令用于将文件或目录从特定位置复制到其他位置。它还可用于复制整个驱动器。语法: robocopy <源> <目标> [<文件>[ ...]][<选项>]现在,让我们也讨论一些用于网络的CMD命令。CMD 网络命令IPCONFIG:IP 配置当需要对网络进行故障排除时,此命令非常有用。当我们在命令提示符下键入 IPCONFIG 时,我们会获得详细信息,例如 IP 地址、子网掩码、默认网关 IP 和网络的当前域。这些详细信息在路由器或任何其他连接问题的故障排除过程中非常重要。语法:ipconfig [/allcompartments] [/all] [/renew [<adapter>]] [/release [<adapter>]] [/renew6[<adapter>]] [/release6 [<adapter>]] [/flushdns] [/displaydns] [/registerdns] [/showclassid <adapter>] [/setclassid <adapter> [<classID>]]netstat此命令可确保防止计算机上的任何病毒攻击。我们需要在命令提示符下键入“NETSTAT”,然后获取当前处于活动状态的所有TCP连接的详细信息。语法:NETSTAT [-a] [-b] [-e] [-n] [-o] [-p <Protocol>] [-r] [-s] [<interval>]例: C:\Users\Netstat(显示活动连接)
  • [技术干货] cmd实现清理系统垃圾的示例代码【转】
    前言在使用计算机的过程中,我们经常会产生很多系统垃圾文件,如果不及时清理可能会影响计算机的性能。本文将介绍如何借助cmd帮助我们清理系统垃圾,提高计算机的运行速度和稳定性。提示:以下是本篇文章正文内容,下面案例可供参考一、cmd是什么?CMD(Command Prompt)是Windows操作系统中的一个命令行工具,它允许用户通过输入指令来执行一些简单的系统操作。以下是CMD的一些常用功能和命令。二、使用步骤1.第一版本右键,创建文本文档打开,输入以下脚本代码如下(示例):@echo off  echo 正在清理(少女祈祷中......) :: 删除系统盘中的临时文件 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  :: 清空回收站 rd /s /q %systemdrive%\recycled :: 删除 Windows 目录中的备份文件和预取文件 del /f /s /q %windir%\*.bak  del /f /s /q %windir%\prefetch\*.*  :: 清空 Windows 目录中的临时文件夹 rd /s /q %windir%\temp  md %windir%\temp  :: 删除用户个人文件夹中的历史记录和 Cookie del /f /q %userprofile%\cookies\*.*  del /f /q %userprofile%\recent\*.*  :: 删除用户个人文件夹中的临时文件和缓存 del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\INetCache\*.*"  del /f /s /q "%userprofile%\AppData\Local\Temp\*.*"  del /f /s /q "%userprofile%\recent\*.*"  echo 清除完成 echo. & pause 然后保存脚本讲解:删除临时文件夹中的所有文件 (%temp%)。删除回收站中的所有文件。清除 Internet Explorer 历史记录。清除 Chrome 历史记录和缓存。清除 Firefox 历史记录和其他一些数据(cookie、下载、表单历史记录、地点、会话存储、webappsstore)。清除 Microsoft Edge 历史记录和缓存。该脚本使用各种命令行工具来完成这些任务,例如 del(删除)、rd(删除目录)、RunDll32(运行 DLL 函数)和任务kill(终止进程)。将 /f 参数添加到 del 命令中,以便在不提示用户确认的情况下强制删除文件。将 /s 参数添加到 del 和 rd 命令中,以便递归地删除所有子目录和文件。去掉IE历史记录清空命令中的空格,并使用逗号代替空格。在每个 del 命令之后添加 *.\ ,以便同时删除所有类型的文件。2.第二版本代码如下(示例):@echo off  echo 正在清理(少女祈祷中......) :: 删除系统盘中的临时文件 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  :: 清空回收站 rd /s /q %systemdrive%\recycled :: 删除 Windows 目录中的备份文件和预取文件 del /f /s /q %windir%\*.bak  del /f /s /q %windir%\prefetch\*.*  :: 清空 Windows 目录中的临时文件夹 rd /s /q %windir%\temp  md %windir%\temp  :: 删除用户个人文件夹中的历史记录和 Cookie del /f /q %userprofile%\cookies\*.*  del /f /q %userprofile%\recent\*.*  :: 删除用户个人文件夹中的临时文件和缓存 del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\INetCache\*.*"  del /f /s /q "%userprofile%\AppData\Local\Temp\*.*"  del /f /s /q "%userprofile%\recent\*.*"  echo 清除完成 echo. & pause del /f /s /q %systemdrive%*.tmp:删除系统盘中所有以 .tmp 结尾的文件。 del /f /s /q %systemdrive%*._mp:删除系统盘中所有以 ._mp 结尾的文件。 del /f /s /q %systemdrive%*.log:删除系统盘中所有以 .log 结尾的文件。 del /f /s /q %systemdrive%*.gid:删除系统盘中所有以 .gid 结尾的文件。 del /f /s /q %systemdrive%*.chk:删除系统盘中所有以 .chk 结尾的文件。 del /f /s /q %systemdrive%*.old:删除系统盘中所有以 .old 结尾的文件。 rd /s /q %systemdrive%\recycled:清空回收站。 del /f /s /q %windir%*.bak:删除 Windows 目录中所有以 .bak 结尾的文件。 del /f /s /q %windir%\prefetch*.*:删除 Windows 目录中预取文件。 rd /s /q %windir%\temp:删除 Windows 目录中的临时文件夹。 md %windir%\temp:重新创建空的 Windows 临时文件夹。 del /f /q %userprofile%\cookies*.*:删除用户个人文件夹中的所有 Cookie。 del /f /q %userprofile%\recent*.*:删除用户个人文件夹中的所有历史记录。 del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\INetCache*.*":删除用户个人文件夹中的 IE 缓存文件。 del /f /s /q "%userprofile%\AppData\Local\Temp*.*":删除用户个人文件夹中的临时文件和缓存。 del /f /s /q "%userprofile%\recent*.*":删除用户个人文件夹中的所有最近文档。 echo 清除完成:在命令行输出“清除完成”。 echo. & pause:在命令行输出一个空行,并暂停运行,等待用户按下任意键继续。如果显示权限不够,请用管理员权限打开
  • [技术干货] 批处理文件bat启动redis及任何软件【转】
    批处理文件每次从文件根目录用配置文件格式来启动redis太麻烦了可以在桌面上使用批处理文件(.bat)启动Redis,请按照以下步骤进行操作:打开文本编辑器,如记事本。在编辑器中输入以下内容:将文件保存为start-redis.bat(或其他你喜欢的名称),确保文件扩展名为.bat。将保存的批处理文件(.bat)文件放置在桌面上。双击桌面上的start-redis.bat文件,它将启动Redis服务器。@echo off cd /d D:\software\Redis-x64-3.2.100 start redis-server.exe redis.windows.conf解释一下第一行解释如下:@echo off 是一个在批处理文件中使用的命令。它的作用是关闭批处理文件的命令回显(Command Echo),即在运行批处理文件时不显示每个命令的执行结果。默认情况下,当批处理文件执行时,每条命令都会在命令窗口中显示其执行结果。使用 @echo off 命令可以关闭这种显示,使得在运行批处理文件时,只显示实际需要输出的内容,不显示命令本身。通过在批处理文件的开头添加 @echo off,可以使批处理文件在执行时更加清晰,减少不必要的输出信息,同时也可以提高批处理文件的执行效率。第二行解释如下:进入你的文件目录第三行解释如下:执行命令call 和 start 是批处理文件中的两个命令,它们在使用上有一些区别1、call 命令:call 用于调用(执行)另一个批处理文件,并在执行完成后返回原来的批处理文件。它可以在当前批处理文件中调用其他批处理文件、子程序或标签,并且执行完毕后会继续执行当前批处理文件的后续命令。call 命令通常用于执行其他批处理文件中的命令或子程序,例如在一个批处理文件中调用另一个批处理文件中定义的函数或标签。2、start命令start 命令用于在新的窗口中启动一个程序或批处理文件,并立即返回,不等待被启动程序的完成。start 命令通常用于在批处理文件中启动一个独立的进程,以实现并行执行或在后台运行的效果。start 命令会启动一个新的命令窗口或程序窗口,并在窗口中执行指定的命令或程序,然后立即返回到当前批处理文件的执行。bat更多使用技巧如下:使用注释:使用 REM 命令添加注释来说明批处理文件的目的、命令用途或其他相关信息。注释不会被执行,可以提高脚本的可读性和可维护性。使用变量:使用变量来存储和引用常用的值或路径,可以减少代码中的重复和冗余。可以使用 set 命令定义变量,并使用 %变量名% 的方式来引用变量的值。添加错误处理:使用 if 命令和错误级别(error level)来处理命令执行中的错误。通过判断错误级别,可以在发生错误时执行特定的操作或输出错误消息。执行命令前添加确认提示:使用 choice 命令结合 echo 命令,可以在执行关键操作之前显示确认提示,以防止意外操作。使用循环:使用 for 或 while 命令来遍历文件、目录或列表,并对每个元素执行相同的命令。这可以帮助批处理文件自动化处理多个文件或目录。使用条件判断:使用 if 命令来进行条件判断,根据不同的条件执行不同的命令。例如,可以判断文件是否存在、变量是否满足某个条件等。使用批处理文件的参数:通过命令行传递参数给批处理文件,可以根据参数的不同执行不同的操作。使用 %1、%2、%3 等变量来引用传递的参数。调用其他批处理文件:使用 call 命令来调用其他批处理文件,可以将一些常用的功能封装在单独的批处理文件中,方便复用和维护。使用延时:使用 timeout 或 ping 命令来添加延时等待,以便在批处理文件中进行适当的等待操作,例如等待服务启动完成或执行时间间隔。输出到日志文件:使用 >> 运算符将命令的输出重定向到日志文件中,方便记录批处理文件的执行结果和错误信息。
  • [技术干货] cmd批量ping命令的实现【转】
    1、批量ping 1个网段ping 1个网段for /l %X in (2,1,254) do (ping -n 2 10.1.2.%X && echo 10.1.2.%X >> ok.txt || echo 10.1.2.%X >> no.txt)命令说明:%l 表示在(2,1,254) 按步长1取值;%X的范围:(2,1,254) 表示起点是2,终点是254,每次加1;可以使用任意字符串表示,%X就是一个变量;ok.txt 是通的地址;no.txt 是不通的地址;工作目录是当前目录 ,ok.txt 和 no.txt 会输出到当前cmd工作目录;ping -n 2 是对每个地址进行发送2次ping 请求包;2、批量ping多个网段for /F %X in (ip.txt) do (ping -n 2 %X && echo %X >> ok.txt || echo %X >> no.txt)命令说明:%F 表示在ip.txt 按空格为分隔符取值,每行1个IP就是读取每行的IP;%X的范围:每行1个IP就是读取每行的IP;;ok.txt 是通的地址;no.txt 是不通的地址;ping -n 2 是对每个地址进行发送2次ping 请求包;工作目录是当前目录 ,ok.txt 和 no.txt 会输出到当前cmd工作目录,ip.txt放在当前cmd工作目录下;
  • [技术干货] BAT获取时间有空格问题的解决方法【转】
    最近在项目上需要把文件定时备份,用BAT文件来自动生成文件夹名,精确到秒:bat脚本时间设定如下:pushd E:\Test set T=%date:~0,10%-%time:~0,2%%time:~3,2%%time:~6,2% md %T% popdtime变量值如下的各个操作的意义如下:%time:~0,2% 表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取2位字符,结果是小时字段数值%time:~3,2% 表示指针从左向右偏移3位,然后从偏移处开始提取2位字符,结果是分钟字段数值%time:~6,2% 表示指针从左向右偏移6位,然后从偏移处开始提取2位字符,结果是秒字段数值用%time:~0,2%%time:~3,2%%time:~6,2%时有个问题, 就是如果TIME 是08点的时候,电脑显示的是08,但是实际上用%time:~0,2%抓取的时候就会有问题,因为实际上抓到到时空格+8,这样在用md创建文件夹的时候,因为T中有空格,会创建2个文件夹:比如现在时间是2019-08-23, 08:30:30;T = 20190823- 83030md %T%会创建2个文件夹:20190823-和83030这样2个文件夹。解决办法:把小时单独定义h,然后把h中空格用0代替,再把h加入到T中:set h=% =0% -> 这里的‘='就是‘替换'的含意pushd E:\Test set h=%time~0,2% set h=% =0% set T=%date:~0,10%-%h%%time:~3,2%%time:~6,2% md %T% popd
  • [技术干货] 批处理echo、echo off、echo on、@、@echo off【转】
    1.前言今天学习批处理的时候看到了这样的一个字样@echo off表示看不懂,就上网上查了一下,但是看一个人的博客看了好几遍也看不懂,所以看了多篇最后决定自己整理一下,以便大家能理解首先在自己的电脑桌面上创建一个文本文件,然后重命名为.bat结尾2.echo命令说明: 这个命令就是把这条命令后的内容显示到控制台上例如下面的例子:3.echo off命令说明:(1)将echo状态设置为off表示关闭其他所有命令(不包括本身这条命令)的回显例子一:请按任意键继续…就是pause命令执行后的结果,它也是有回显的,不过被echo off 给消除了C:\Users\liang\Desktop> 就是echo off 命令的回显 ,即本身的回显没有关闭,如果想关闭的话,在前面加一个@就可以了,像这样子:@echo off
  • [网络安全] DDoS防护
    安全、安全、安全、重要的事情说三遍,企业上云,当然缺不了安全产品的保护。我们针对DDoS攻击提供了一下服务。针对DDoS攻击,华为云提供多种安全防护方案,您可以根据您的实际业务选择合适的防护方案。华为云DDoS防护服务(Anti-DDoS Service,简称ADS)提供了DDoS原生基础防护(Anti-DDoS流量清洗)、DDoS原生专业防护和DDoS高防三个子服务。其中,Anti-DDoS流量清洗为免费服务,DDoS原生专业防护和DDoS高防为收费服务。各子服务主要的区别说明如下。 DDoS防护方案说明子服务简介应用场景DDoS攻击防御能力DDoS原生基础防护(Anti-DDoS流量清洗)通过对互联网访问公网IP的业务流量进行实时监测,及时发现异常DDoS攻击流量。在不影响正常业务的前提下,根据用户配置的防护策略,清洗掉攻击流量。同时,Anti-DDoS为用户生成监控报表,清晰展示网络流量的安全状况。使用华为云即可使用Anti-DDoS流量清洗服务,可以满足华为云内的公网IP(IPv4和IPv6)较低安全防护需求。为普通用户免费提供2Gbps的DDoS攻击防护,最高可达5Gbps(视华为云可用带宽情况)。DDoS原生专业防护华为云推出的针对华为云ECS、ELB、WAF、EIP等云服务直接提升其DDoS防御能力的安全服务。DDoS原生专业防护对华为云上的IP生效,无需更换IP地址,通过简单的配置,DDoS原生专业防护提供的安全能力就可以直接加载到云服务上,提升云服务的安全防护能力。DDoS原生专业防护适用于部署在华为云服务上,且华为云服务有公网IP资源的业务,能够满足业务规模大、对网络质量要求高的用户。DDoS原生专业防护适用于具有以下特征的业务:业务部署在华为云服务上,且云服务能提供公网IP资源业务带宽或QPS较大例如,在线视频、直播等对业务带宽要求比较高的领域。IPv6类型业务防护需求华为云上公网IP资源较多业务中大量端口、域名、IP需要DDoS攻击防护支持全力防护。DDoS高防DDoS高防通过高防IP代理源站IP对外提供服务,将所有的公网流量都引流至高防IP,进而隐藏源站,避免源站(用户业务)遭受大流量DDoS攻击。支持华为云、非华为云及IDC的互联网主机。5T以上DDoS高防总体防御能力,单IP最高600G防御能力,抵御各类网络层、应用层的DDoS攻击。
  • [技术干货] 如何判断服务器是否被DDOS攻击? DDOS攻击的防御和应对办法
    一、什么是DDoS攻击DDoS是Distributed Denial of Service的缩写,即分布式拒绝服务,DDoS攻击是一种网络攻击手法,其目的在于使目标电脑的网络或系统资源耗尽,服务暂时中断或停止,导致合法用户不能够访问正常网络服务的行为。当攻击者使用网络上多个被攻陷的电脑作为攻击机器向特定的目标发动DoS攻击时,称为分布式拒绝服务攻击。二、DDoS攻击主要有两种攻击方式一种是针对网络带宽的攻击,通过大量”肉鸡“模拟真实用户访问,占用网络带宽,导致真正的用户无法正常访问;另外一种是针对服务器主机的攻击,通过大量的攻击包占据服务器主机的CPU、内存、网络连接等,导致服务器主机性能负载崩溃,而无法提供正常访问。三、被攻击的10种故障现象3.1、云监控监控到带宽超限,拥塞率100%3.2、ping丢包率高3.3、网络抓包发现大量无用的数据包3.4、网络流量图突增,带宽跑平3.5、网络连接数暴增,netstat -an查到大量TCP连接状态为SYN_RECV、TIME_WAIT、FIN_WAIT# netstat -an|awk '/tcp/ {print $6}'|sort|uniq –c16 CLOSING         // CLOSING:两边同时尝试关闭13 ESTABLISHED     // ESTABLISHED:正常数据传输状态29800 FIN_WAIT1    // FIN_WAIT1:应用说它已经完成13000 FIN_WAIT2    // FIN_WAIT2:另一边已同意释放9 LAST_ACK          // LAST_ACK:等待所有分组死掉7 LISTEN             // LISTEN:服务器在等待进入呼叫103089 SYN_RECV    // SYN_RECV:一个连接请求已经到达,等待确认520400 TIME_WAIT   // TIME_WAIT:另一边已初始化一个释放3.6、无法连接服务器3.7、网站无法打开3.8、CPU占用100%、内存耗尽linux系统:Top命令显示系统CPU占用达到100%。Windows系统任务管理器:3.9、在Anti-ddos控制台查询到该IP的流量清洗如果能查到该IP的清洗记录和封堵记录,那确定是被DDOS攻击了。3.10、服务器系统日志和应用日志量暴增服务器nginx日志量短时间内暴增:综上确定服务器被DDOS CC攻击了。四、防御和应对办法4.1、因DDOS是资源耗尽型攻击,此时要调整带宽、增加CPU内存规格,优化系统参数,以提高服务器性能参考《sysctl系统优化参数》https://bbs.huaweicloud.com/blogs/1954914.2、设置anti-ddos流量清洗,调整阀值,默认是120M,对于攻击流量进行清洗请参考《配置Anti-DDoS防护策略》https://support.huaweicloud.com/usermanual-antiddos/antiddos_01_0013.html4.3、针对大带宽攻击,购买DDOS高防,拦截DDOS攻击请参考《网站类业务快速接入DDoS高防》 https://support.huaweicloud.com/qs-aad/4.4、购买WAF防火墙、设置规则,拦截CC攻击请参考《WAF防火墙配置CC攻击防护规则》https://support.huaweicloud.com/usermanual-waf/waf_01_0009.html