惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Icebird

谈谈批处理文件里的注释 在.NET中使用PhysFS来挂载压缩包(zip) Prototype速查 - Icebird Password for ReportBuilder Enterprise v10.08 Retail For Delphi 7-Lz0 [Delphi] DUnitID 0.17.4725 RSSReader JavaScript Edition [Delphi] GetClass与RegisterClass的应用一例 DelForEx v2.5 for Delphi 2007 我的Delphi开发经验谈 JBookManager v1.00.2008314 (编辑管理您的Jar电子书) Windows优化大师的一点研究 [Delphi] 发布QuickenPanel Component LINQ to JavaScript [PowerShell] 将rar文件转换为zip格式 [PowerShell] GBK简繁转换 [PowerShell] PowerShell学习脚印 JavaScript测试页面 DevExpress ExpressScheduler 快速编译批处理文件 备份工具 SmartBackup的源代码
[PowerShell] SFV生成与校验
Icebird · 2008-02-14 · via 博客园 - Icebird

# Author: Icebird@cnblogs
#
 Purpose: Check-SFV (csfv) and Make-SFV (msfv)

function Global:Check-SFV([string]$filename = "")
{
trap
{
  
$_.InvocationInfo
  write
-host ("{0,-17:S}{1} {2}" -f "Exception"":"$_.Exception.Message)
  
break
}

    
if (($filename.Length -eq 0-or !($filename -match ".sfv$"))
    {
        
return "Usage: Check-SFV filename.sfv"
    }
    dir 
$filename > $null
    
$sfv = type $filename | ? {$a = $_.Trim(); ($a.Length -gt 0-and !($a -match "^[#;]")}
    [hashtable] 
$table = @{}
    [regex] 
$regex = "^(.+)`\s+([0-9a-zA-Z]+)$"
    
$sfv | % {
        
$m = $regex.matches($_)
        
if (($m.Count -gt 0-and $m[0].Success)
        {
            
$table.Add($m[0].Groups[1].Value, $m[0].Groups[2].Value)
        }
    }
    
$path = split-path($filename)
    
if ($path.Length -gt 0)
    {
        
$path += "\"
    }
    
$table.Keys | sort | % {
        
$file = "$path$_"
        
$crc = $table[$_].ToUpper()
        
$regex = "bytes[)] is 0x(.{8,8})"
        
$r = CRC "$file"
        
$m = $regex.matches($r)
        
if (($m.Count -gt 0-and $m[0].Success)
        {
            
if ($m[0].Groups[1].Value -eq $crc)
            {
                echo 
"$file is OK"
            }
            
else
            {
                echo 
"$file is damaged"
            }
        }
        
else
        {
            echo 
"$file is missing"
        }
    }
}

function Global:Make-SFV([string]$path = "",[string]$filename = "")
{
trap
{
  
$_.InvocationInfo
  write
-host ("{0,-17:S}{1} {2}" -f "Exception"":"$_.Exception.Message)
  
break
}
    
if ($path.Length -eq 0)
    {
        
return "Usage: Make-SFV path [filename.sfv]"
    }
    
$files = (dir $path -exclude *.sfv | ? { $_ -is [System.IO.FileInfo] } | sort { $_.Name })
    
if (($files -eq $null-or ($files.Count -eq 0))
    {
        
return
    }
    
if ($filename.Length -eq 0)
    {
        
if ($files -is [System.IO.FileInfo])
        {
            [regex] 
$regex = $files.Extension + "$"
            
$filename = $files.FullName -replace $regex,""
        }
        
else
        {
            
$filename = $files[0].Directory.FullName + "\" + $files[0].Directory.Name
        }
    }
    
if (!($filename -match "[.]sfv$"))
    {
        
$filename += ".sfv"
    }
    
$temp = "${env:Temp}\makesfv.tmp"
    echo 
"; 由 PowerShell.MakeSFV 生成" > $temp
    [string] 
$now = get-date
    echo (
"; 使用 CRC Verification Utility v3.05 于 " + $now>> $temp
    echo 
";" >> $temp
    
$files | % {
        
$r = CRC "$_"
        [regex] 
$regex = "bytes[)] is 0x(.{8,8})"
        
$m = $regex.matches($r)
        
if (($m.Count -gt 0-and $m[0].Success)
        {
            echo (
$_.Name + " " + $m[0].Groups[1].Value) >> $temp
        }
    }
    type 
"$temp" | out-file $filename -encoding default #转为ansi格式
    type "$filename"
    del 
"$temp"
}

if ((dir alias: | ? { $_.Name -eq "csfv"  }) -eq $null)
{
new
-alias csfv Check-SFV -scope global
}
if ((dir alias: | ? { $_.Name -eq "msfv"  }) -eq $null)
{
new
-alias msfv Make-SFV -scope global
}

这段脚本将增加两个全局函数Check-SFV (csfv) 和 Make-SFV (msfv),用途是生成SFV与校验SFV

注意:
1. CRC.EXE在搜索路径里的任意目录内

Usage Example:

msfv C:\book\*.rar
msfv C:\book\*.rar D:\book.sfv
csfv test.sfv
csfv d:\cd\cd.sfv

crc.exe下载:
https://files.cnblogs.com/Icebird/crc.rar