将脚本转换为Linux

时间:2018-10-02 06:29:00

标签: bash

有人可以帮助将该DOS脚本转换为bash吗? 我曾尝试过,但并未真正成功

set DownloadPath="/volume1/various/temp"
set CorruptFilePath=/volume1/various/!corrupt
set ErrorReport=/volume1/various/Corrupt files.txt
pushd %DownloadPath%
for /r %%i in (*.rar;) do (
    "unrar.exe" t "%%i"
    if ERRORLEVEL 1 echo %%i>>%ErrorReport% & copy "%%i" %CorruptFilePath%
)
popd

有人可以帮我吗,非常感谢

我已要求更新问题,但脚本已如下所示进行转换,仅缺少一小部分关于maxdir深度

1 个答案:

答案 0 :(得分:0)

如果我正确理解,您的脚本将测试给定文件夹(包括子文件夹)中每个.rar文件的完整性,在错误日志中报告每个失败,并将失败的.rar文件复制到单独的文件夹中

一个直接连接到Bash的端口看起来像这样:

#!/bin/bash

DownloadPath="/volume1/various/temp"
CorruptFilePath="/volume1/various/!corrupt"
ErrorReport="/volume1/various/Corrupt files.txt"

cd "$DownloadPath"
shopt -s globstar
for r in **/*.rar; do
        unrar t "$r" || { echo "$r" >> "$ErrorReport" && cp -p "$r" "$CorruptFilePath"; }
done

免责声明:我尚未测试脚本。请随时这样做。