无法使用的BAT脚本

很奇怪,我之前写的BAT脚本改了半天都不行:
BAT - 编译YARA规则的脚本
可能是因为我换电脑(且为Windows11)的原因?改Python重新写一遍💢💢💢

脚本逻辑

  1. 获取目录下所有的.yar文件
  2. 将*.yar中的内容保存到“AllYARAs.yar”
  3. yarac编译“AllYARAs.yar”
    1. 调用“os.system”执行编译代码
    2. 前置环境条件:已经将“yarac.exe”设置环境变量,故可以直接通过command调用

      🐍Python代码🐍

      ```python

      -- coding: CP936 --

      import os from pathlib import Path

msgStart = r”——————————Python脚本开始——————————“ msgEnd = r”——————————Python脚本结束——————————“

strSpace = “ “ bNewLine = b”\r\n”

YARA不支持带空格的路径,所以另用桌面路径输出

pathExport = r”C:\Users\Administrator\Desktop” pathYar = r”D:\Software Files\Python Project\PyQT5\从MarkDown提取IoCs\Code\YARA Rule” pathAllYARAs2Compile = pathExport + “\AllYARAs.yar” pathAllYARAsPass = pathExport + “\AllYARAs.Pass”

def EnumAllYars2Compile(pathDir):

  1. # print("需要遍历的路径:", pathDir)
  2. f2Compile = open(pathAllYARAs2Compile, 'wb+')
  3. listPathYar = []
  4. # 遍历.Yar文件
  5. for WindowsPath in Path(pathDir).rglob('*.yar'):
  6. with open(WindowsPath, 'rb') as fYar:
  7. strCode = fYar.read()
  8. # 加个换行符(byte)
  9. f2Compile.write(strCode + bNewLine)
  10. fileYar = str(WindowsPath)
  11. listPathYar.append(fileYar)
  12. f2Compile.close()
  13. print("文件已保存:" + pathAllYARAs2Compile)

print(““.yar”文件列表:”)

print(listPathYar)

def CompileYar(pathAllYARAsYar):

  1. # yarac -w [需要编译的文件] [编译后输出的文件]
  2. cmdCompile = "yarac -w " + pathAllYARAsYar + strSpace + pathAllYARAsPass
  3. # print("编译命令:", cmdCompile)
  4. os.system(cmdCompile)

if name == ‘main‘: print(msgStart)

  1. if os.path.exists(pathAllYARAs2Compile):
  2. # print("删除上次存在的总文件:" + pathAllYARAs2Compile)
  3. os.remove(pathAllYARAs2Compile)
  4. # 遍历目标文件夹中的.yar文件保存为单个.yar文件
  5. EnumAllYars2Compile(pathYar)
  6. # 编译拥有所有Yar代码的.yar文件
  7. CompileYar(pathAllYARAs2Compile)

print(msgEnd) ```