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

推荐订阅源

T
Tenable Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Google Online Security Blog
Google Online Security Blog
T
Threat Research - Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
W
WeLiveSecurity
NISL@THU
NISL@THU
V
Vulnerabilities – Threatpost
V2EX - 技术
V2EX - 技术
Cisco Talos Blog
Cisco Talos Blog
Simon Willison's Weblog
Simon Willison's Weblog
The Last Watchdog
The Last Watchdog
P
Privacy International News Feed
博客园 - 三生石上(FineUI控件)
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Scott Helme
Scott Helme
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
量子位
Security Archives - TechRepublic
Security Archives - TechRepublic
Microsoft Azure Blog
Microsoft Azure Blog
F
Fortinet All Blogs
H
Hacker News: Front Page
D
Docker
N
Netflix TechBlog - Medium
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
K
Kaspersky official blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
小众软件
小众软件
S
Security Affairs
博客园 - 聂微东
AI
AI
Latest news
Latest news
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Engineering at Meta
Engineering at Meta
Cloudbric
Cloudbric
S
Secure Thoughts
Spread Privacy
Spread Privacy
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org

博客园 - Icebird

谈谈批处理文件里的注释 在.NET中使用PhysFS来挂载压缩包(zip) 用户中心 - 博客园 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