精华内容
下载资源
问答
  • bat脚本编码问题

    千次阅读 2019-10-30 11:18:39
    问题根源:cmd窗口的“当前代码页”编码bat脚本编码不一致。 解决方案: 在cmd窗口中右键标题栏,选择属性->选项,可以看到默认的当前代码页为936 (ANSI/OEM)。 所以我们可以通过以下两种方式解决问题。...

    问题:bat脚本中有中文参数,脚本执行异常。

    问题根源:cmd窗口的“当前代码页”编码与bat脚本的编码不一致。

    解决方案:

    在cmd窗口中右键标题栏,选择属性->选项,可以看到默认的当前代码页为936 (ANSI/OEM)。

    所以我们可以通过以下两种方式解决问题。

    1.设置bat脚本编码为ANSI。

    2.在bat脚本中通过通过添加命令 “CHCP 65001” 将,当前cmd窗口的“当前代码页”设置为utf-8,同时把bat脚本编码设置为utf-8。

    展开全文
  • bat脚本编码加密的简单解密方法

    千次阅读 2019-09-26 11:44:12
    本次我要分享的就是利用字符编码产生的加密方式的解密方法 拿到一个bat脚本,用notepad++打开发现都是乱码 挦獬਍敀档景൦䌊尺楗摮睯屳祓瑳浥㈳坜湩潤獷潐敷卲敨汬癜⸱尰潰敷獲敨汬攮數ⴠ硅捥瑵潩偮汯捩⁹祢慰獳...

    在分析病毒时,总会遇见各种各样的类型的样本,bat脚本病毒也非常常见,bat属于脚本语言,用文本查看器查看源码会一目了然,有很多人不希望让别人看到自己的源码,也就有了一些算是加密的方式

    本次我要分享的就是利用字符集编码产生的加密方式的解密方法

    拿到一个bat脚本,用notepad++打开发现都是乱码

    挦獬਍敀档景൦䌊尺楗摮睯屳祓瑳浥㈳坜湩潤獷潐敷卲敨汬癜⸱尰潰敷獲敨汬攮數ⴠ硅捥瑵潩偮汯捩⁹祢慰獳ⴠ潮牰景汩⁥眭湩潤獷祴敬栠摩敤丨睥伭橢捥⁴祓瑳浥丮瑥圮扥汃敩瑮⸩潄湷潬摡楆敬✨瑨灴⼺猯祫慭瑳㌲ⴱ〰ⴱ楳整⸱瑨浥異汲挮浯㐯⹦獪Ⱗ┧单剅剐䙏䱉╅䅜灰慄慴㑜⹦獪⤧※浣⁤振✠唥䕓偒佒䥆䕌尥灁䑰瑡屡昴樮❳਍硅瑩਍
    

    很多人可能一下子就懵了,明明能正常跑起来的bat脚本怎么是乱码,就不知道该如何分析下去了,其实对于这种情况解密很简单

    1.我们把脚本后缀改为doc

    2.使用word打开

    3.选择MS-DOS文本编码

    在这里插入图片描述

    点击确定,源码一目了然

    在这里插入图片描述

    展开全文
  • BAT脚本字符串处理

    万次阅读 2018-05-12 15:10:35
    在CMD中,对字符串的处理可以通过

    一、在BAT中中文乱码

    在CMD中,一般输入中文会出现乱码,因为cmd对中文的编码格式为ANSI编码,所以如果想让bat脚本显示中文,便需将其编码格式转为ANSI。

    如下图:


    将其编码格式改为ANSI以后:


    二、对字符串的截取

     @echo off
    set abc=hello world, this string come from bat
    echo 原字符串为:%abc%
    echo 截取前5个字符:%abc:~0,5%
    echo 截取最后5个字符:%abc:~-5%
    echo 截取第一个到倒数第6个字符:%abc:~1,-5%
    echo 从第4个字符开始截取5个字符:%abc:~3,5%
    echo 从倒数第14个字符开始截取5个字符:%abc:~-14,5%

    代码运行结果:


    三、对字符串的替换

     @echo off
    set aa=你好!世界
    echo 替换前:%aa%
    echo 替换后:%aa:世界=中国%
    echo aa=%aa%
    echo %aa%
    set aa=%aa:世界=中国%
    echo aa=%aa%

    代码运行结果:


    四、字符串的合并

     @echo off
    set aa=你好!
    set bb=世界
    echo %aa%%bb%

    echo aa=%aa%
    echo bb=%bb%
    set "aa=%aa%%bb%"
    echo aa=%aa%
    运行结果:


    如上图所示,在bat脚本中,为了让脚本可以更好地识别字符串的开始与结束,最好用“”来将字符串进行标注,类似于()的功能,表示该字符串为一个字符串。

    展开全文
  • bat脚本

    2020-10-16 09:52:38
    CMD命令行里的单%和bat中的双% =============== 将命令输出结果传递给一个变量 cmd1 > tmp.dat set /p var=<tmp.dat 结合问题后: netstat -a|findstr 50000 >tmp.dat set /p a=<tmp.dat 最后不...

    目录

    bat输出换行

    set查看系统自定义变量

    bat字体颜色

    将命令输出结果传递给一个变量

    远程桌面端口查询

    远程桌面端口查询2(这个可以用)

    远程桌面端口查询3(这个更简单)

    CMD命令行里的单%和bat中的双%

    if语句


    ===============

    bat输出换行

    echo.

    set查看系统自定义变量

    系统自定义的变量,可以直接echo %变量名% 查看

    比如echo %username%

    bat字体颜色

    color 2f
    这里的bai2代表背景,duF代表字色。你自己zhi看下吧(下面是对应关系dao)
    0=黑、1=蓝、2=绿、权3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白

     

    将命令输出结果传递给一个变量

    cmd1 > tmp.dat

    set /p var=<tmp.dat

    结合问题后:

    netstat -a|findstr 50000 > tmp.dat

    set /p a=<tmp.dat

    # 上面只把tmp.dat中的第一行数据赋给了变量a

    最后不需要tmp.dat

    加上:

    del tmp.dat

    远程桌面端口查询

    @echo off
    for /f "tokens=2 delims= " %%i in ('tasklist /svc ^|findstr Ter') do (set a=%%i)
    
    # 这里delims后面有个空格的话,就默认按空格隔开每行元素
    # token=2表示取每行的第二列,token=*表示所有列
    # 还可以加参数skip=N,跳过前N行
    # in后括号内是命令,用单引号括起来,而且管道符号|前要加^进行转义
    
    echo %a%
    for /f "tokens=2 delims= " %%i in ('netstat -ano ^|findstr %a%') do (set a=%%i)
    echo %a%
    pause
    @echo off
    chcp 65001
    ::这里是中文编码
    
    for /f "tokens=2 delims= " %%i in ('tasklist /svc ^|findstr Ter') do (set a=%%i)
    echo 远程桌面服务进程号:%a%
    
    netstat -ano |findstr %a%>tmp-lzb.dat
    ::这里将结果输出为一个文件,txt也可以
    
    find /c "3389" tmp-lzb.dat
    ::这里查找输出里有几个3389,统计的是个数
    
    pause
    

    下图为上面的结果 

     

    远程桌面端口查询2(这个可以用)

    echo.
    echo ##############################################################################
    echo #                                                                            # 
    echo #                网络安全:远程桌面端口必须非3389                               # 
    echo #                                                                            # 
    echo ##############################################################################
    ::@echo off
    for /f "tokens=2 delims= " %%i in ('tasklist /svc ^|findstr Ter') do (set a=%%i)
    echo. 
    echo 远程桌面服务进程号:%a%
    netstat -ano |findstr %a%>tmp-lzb.dat
    for /f "tokens=3 delims= " %%i in ('find /c "3389" tmp-lzb.dat') do (set a=%%i)
    del tmp-lzb.dat
    echo 在远程桌面服务进程中匹配到的3389端口号个数:%a%
    if %a%==0 (echo 远程桌面端口非3389) else (echo 远程桌面端口为3389,需修改)
    ::find /c "3389" tmp-lzb.dat

    远程桌面端口查询3(这个更简单)

    netstat -ano -p tcp | find "3389" >nul 2>nul && echo 端口已开启 || echo 端口未开启

     

    CMD命令行里的单%和bat中的双%

    命令行用单%
    写到批处理所有单%要改成双%%
    
    追问
    能不能简单告诉我一下,这个是为什么呢?还有写批处理文件和命令行有什么区别?
    追答
    1、%是个ESCAPE字符,通常将之译为转义字符,但也有更形象的译名脱逸字符、逃逸字符等。
    也就是说%不仅仅将与其相关的特定字符串转义并替换为特定字符串,而且自身也会被“脱逸”。
    而且类似于C语言中的转义字符"\",双%会转义并脱逸为单%,四%则脱为双%。
    
    2、for本身是一个特殊的命令,类似于一个特化的命令解释器,因为它的功能实现需要执行多条语句,
    因此它必须也具有对命令行(特指do后的命令行)分析
    处理的功能。而command/cmd实现for时自然会借用自身原有的命令行分析模块,
    因此for具有二级转义的特性,for中do后的语句被分两级分
    析和解释,第一级在command/cmd读入并解释for命令行时,第二级在for读入并解释do命令时,
    它通常会对同一命令行的进行多次解释。
        
    然后,我们可以注意到,在do中使用命令行参数变量和环境变量时,不需要双%,
    那是因为,这些变量在经过第一级转义后,被替换成特定的不变的字符串常量,
    参与for循环的所有执行过程;而替代变量则要求在执行(do后的子命令行中)过程中不断的动态变化,
    而这个变化自然仍需要通过脱逸字符来实现,因此使用
    双%就是成了必然的选择。
    
    另外,还需要注意到,在命令行中使用for时不需要双%,
    这源于命令解释器对命令行与批处理的处理方式不同。
    在早期的DOS版本中,%在命令行中不被视为转义字符,所以不会被转义和脱逸,
    所以当时无法在命令行直接引用环境变量。而使用for时,只需要一个%供for进行转义和脱逸就够了。
    在以后的命令解释器版本中,加入了命令行转义的支持(主要是环境变量的支持),
    但命令行for使用单%的传统仍然保留了下来。
    
    而cmd中的变量延迟替换是属于特殊的情况,但不违背以上的转义原则,
    只是for中的环境变量不再是常量了。

    if语句

    if %a%==0 (echo 远程桌面端口非3389) else (echo 远程桌面端口为3389,需修改>>巡检结果.txt)
    ::这里的%a%是个数值变量
    if用于条件判断,适用于以下情形:
    
      1、判断驱动器、文件或文件夹是否存在,用 if exist 语句;
      2、判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句;
      3、判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;
      4、判断某个变量是否已经被赋值,用 if defined str 语句;
    
      if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:
    如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。
    
      对于以上四种情形,可以分别使用如下代码:
    
      1、if exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)
      2、if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)
      3、if 1 equ 2 (echo 1等于2) else (echo 1不等于2)
      4、if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)
    
      判断字符串是否相等的时候,if会区分大小写,比如,单纯的if语句会认为字符串abc和字符串Abc不相同,
    若不想区分大小写,则需要添加 /i 开关,使用 if /i "字符串1"=="字符串2" 的格式;
    另外,等于符号是连续的"=="而非单独的"="。

     

    展开全文
  • bat脚本基础教程

    2017-12-20 08:33:00
    bat脚本就是DOS批处理脚本,就是将一系列DOS命令按照一定顺序排列而形成的集合,运行在windows命令行环境上。本文主要介绍bat脚本基础语法,希望完成本文内容学习之后具备基础的bat脚本开发能力,提高工作效率。 为...
  • bat 脚本使用

    千次阅读 多人点赞 2020-01-11 23:35:47
    bat文件是存在于dos/windows中的脚本文件,bat的直接操作对象是dos命令,dos命令是system32下的exe或者cmd可执行程序的子集,长驻于内存中,具有简单、处理速度快的特点,取名为批处理毫无争议,也是非图形shell在...
  • windows bat脚本编写

    万次阅读 多人点赞 2018-08-03 17:55:31
     开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建、编辑和查看。两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多。...
  • 之前没有写过bat脚本,学习了半个小时,感觉跟shell功能都一样,大同小异。  FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法! 先把FOR的变量全部列出来: ~I - 删除任何引号(")...
  • 常用bat脚本命令

    2020-10-20 18:32:36
    window 批处理脚本通常都是 .bat 或 .cmd 后缀。 区别: 本质上没有区别,都是简单的文本编码方式,都可以用记事本创建、编辑和查看。两者所用的命令行代码也是共用的。 只是 cmd 文件中允许使用的命令要比 bat ...
  • 如何解决Bat脚本中包含中文,运行乱码 转载于:https://jingyan.baidu.com/article/a3f121e4d84a5dfc9152bb55.html bat脚本在批处理的时候被经常用到,但是有时候不正确的使用,会导致在bat脚本中的中文,运行起来...
  • bat脚本基础教程 https://www.cnblogs.com/linyfeng/p/8072002.html 自己动手太少了。 bat脚本就是DOS批处理脚本,就是将一系列DOS命令按照一定顺序排列而形成的集合,运行在windows命令行环境上。...
  • bat脚本学习

    2019-10-07 12:46:58
    在这个脚本中出现了如下几个命令:@、echo、::、pause、:和goto、%以及if。而这一章就将讲述这几个命令。1、@这个符号大家都不陌生,email的必备符号,它怎么会跑到批处理中呢?呵呵,不是它的错,批处理本来就离不...
  • bat bat 脚本设置永久环境变量 作为程序员,是不是经常需要设置系统环境变量,比如安装 java后,安装Python后,或者安装免安装版程序。个人喜欢用绿色版,因为这样就不用安装。但也需要做些设置,下面就用bat 脚本来...
  • bat脚本:快速入门

    2020-06-19 15:44:05
    主要介绍windows bat脚本的基础语法以及一些常用功能的实现,通过这些基础操作的组合可以编写出强大的脚本工具。 1. 常用命令介绍 2. 文件操作 2.1 文件(夹)创建 2.2 文件(夹)删除 2.3 文件(夹)重命名 3. 键盘...
  • ANSI并不是某一种特定的字符编码,而是在不同的系统中,ANSI表示不同的编码。美国Bob的系统中ANSI编码其实是ASCII编码(ASCII编码不能表示汉字,所以汉字为乱码) ,中国系统中(“汉字”正常显示)ANSI编码其实是...
  • BAT脚本解惑

    2018-06-27 09:59:45
    由于从浏览器复制过来的url地址,在bat文件中被编码成了url独有的地址,win默认的编码格式与之不同,解析出错,所以报找不到此路径。可以在检出之前如此设置 @echo off set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS...
  • 示例:  Windows上新建一个文本文件,输入以下内容,修改文本文件... 默认情况下,若在bat脚本文件中出现中文字符,运行时则会出现乱码情况,若要避免运行时乱码,需要修改文本编码! 解决方法:  选中需要修改的文
  • 小脚本看bat脚本原理

    千次阅读 2016-05-26 11:50:11
    有些时候我们需要在cmd命令行里面运行一些操作,如果较常使用,可以用编写一些小bat文件来处理;比如下面的bat文件:d: cd redis cd redis-windows-master cd src ...PAUSE字符编码ANSI; 等同于在命
  • bat脚本迁移文件

    2021-08-19 17:32:12
    将某个文件夹下的xml文件,如 abc-xxx.xml ...rem 取abc-xxx.xml文件名“-”前的字符串 for /f "tokens=1 delims=- " %%a in ('echo %%k') do ( rem E:\教程\为目标文件路径,可自行修改 Xcopy %
  • 前言: 使用常见,1.当服务端口冲突。提示端口被占用时,想启动新服务,必须把之前占用端口的服务给停止掉的时候,window 下切换CMD命令窗口,去...于是,做成停止端口的bat脚本。点击bat脚本,弹出命令框,输入...
  • 另外,批脚本文本参数参照(%0、%1、等等)已如下改变: 批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...) 批参数(%n)的替代已被增强。您可以使用以下语法:(看不明白的直接运行后面的例子) %~1 - 删除引号(")...
  • bat脚本的常用特殊符号

    千次阅读 2020-06-03 16:13:57
    7、^转义字符 8、&组合命令 9、&& 组合命令 10、||组合命令 11、""字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 16、批处理中可能会见到的其它特殊标记符: (略) CR(0D) 命令行结束符...
  • 简化脚本bla.bat:致电%1称它为:bla.bat" echo'hello'"(或bla.bat" git status")错误:无法将"" git status""识别为内部或外部命令,可操作的程序或批处理文件。如果我执行" CALL git status",它会起作用。要记住...
  • bat标题 @echo off title xxx pause 设置变量 SET port=18087 %变量名%使用 --port=%port% 字符串拼接 SET appName=server echo %appName%启动开始-------- @echo off SET port=18087 SET appName...
  • 最近几天做了一项window下的打包工作,因为每天都要制作安装包,所以要设置一下时间戳,为此研究了一下Windows下bat脚本获取时间和Linux下shell脚本获取时间。 1、Windows下bat脚本获取时间 (1)windows下DOS窗口...
  • 我们在日常运行第三方的脚本的时候经常看到非常炫酷的启动logo,比如下图: 不仅美观,而且可以展示品牌和团队标志,提高曝光度。下面详细介绍一下如何用纯batch脚本实现上述效果,如果有更好的实现方案也可以在...
  • 超详细的bat脚本常用命令及亲测示例

    万次阅读 多人点赞 2019-09-03 23:21:11
    注意:编辑bat文件请使用ANSI编码(不然会出现中文乱码) 1、语句注释 rem命令行注释,可以回显(语句会在命令行中显示); ::两个冒号,效果同上,但不会回显。(冒号后加任意非字母数字字符都可起到注释作用) ...
  • 详细的批处理文件bat脚本命令

    千次阅读 多人点赞 2019-12-21 16:03:34
    在Linux系统下,批处理通过shell脚本完成,而在windows平台下,批处理的文件后缀为.batbat文件其实就是dos命令的集合 bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,503
精华内容 3,801
关键字:

bat脚本字符编码