鹅鹅鹅鹅 发表于 5 天前

代码与法律

https://www.zhihu.com/question/12523235406

鹅鹅鹅鹅 发表于 5 天前

我在QQ群里找人替我定制软件。过了段时间他说好了,就下载了他的脚本。他要求我付款,我没有付款。然后我运行了那个脚本,检验他的功能对不对。后来发现功能错了。联系那人又不在线。

如果他告我没付款,我说他的软件功能不对,等他功能改正了再付款,改正之前不付。法律是否支持?谁能证明他的功能不对,也许换了台电脑功能又正常了?

要求的功能:逐字节比较两文件二进制数据,从头到尾相同位置完全相等就是相同文件。

a目录有的文件,就只留一份,其他相同的删除。a目录没有的,b目录里面的,就只保留b目录的

function Compare-FilesByteByByte {

param (

$FilePath1,

$FilePath2

)


# 检查文件大小是否相同

$file1Size = (Get-Item $FilePath1).Length

$file2Size = (Get-Item $FilePath2).Length

if ($file1Size -ne $file2Size) {

return $false

}


# 打开文件流

$stream1 = ::OpenRead($FilePath1)

$stream2 = ::OpenRead($FilePath2)


try {

# 逐字节比对

for ($i = 0; $i -lt $file1Size; $i++) {

$byte1 = $stream1.ReadByte()

$byte2 = $stream2.ReadByte()


if ($byte1 -ne $byte2) {

return $false

}

}


return $true

}

finally {

# 关闭文件流

$stream1.Close()

$stream2.Close()

}

}


function Remove-DuplicateFiles {

param (

]$Folders

)


# 用于存储已检查的文件路径

$checkedFiles = @()


# 遍历所有文件夹

foreach ($folder in $Folders) {

# 获取文件夹中的所有文件

$files = Get-ChildItem -Path $folder -Recurse -File


foreach ($file in $files) {

$isDuplicate = $false


# 与已检查的文件逐字节比对

foreach ($checkedFile in $checkedFiles) {

if (Compare-FilesByteByByte -FilePath1 $file.FullName -FilePath2 $checkedFile) {

$isDuplicate = $true

Write-Host "发现重复文件: $($file.FullName) 与 $checkedFile"

# 删除当前文件

Remove-Item -Path $file.FullName -Force

Write-Host "已删除文件: $($file.FullName)"

break

}

}


# 如果文件不是重复的,则添加到已检查的文件列表中

if (-not $isDuplicate) {

$checkedFiles += $file.FullName

}

}

}

}


# 文件夹路径

$folderA = "C:\Users\Administrator\Documents\新建文件夹 (2)"

$folderB = "C:\Users\Administrator\Desktop\新建文件夹2"

$folderC = "D:\"


Remove-DuplicateFiles -Folders @($folderA, $folderB, $folderC)
页: [1]
查看完整版本: 代码与法律