Tho*_*ght 1 bash powershell translate code-translation
我使用Hedge传输在我的佳能 5D Mark III 上拍摄的Magic Lantern视频文件。
在 OS X 上,我可以使用 Automator 设置 bash 脚本,执行mlv_dump将文件从 MLV 传输到 cDNG 序列。
我目前使用的脚本是:
cd "$(dirname "$1")"
for f in "$@"; do
    if [[ -f $f ]]; then
        filename=${f##*/};
        folder=${filename%.*}
        mkdir "${folder}";
        ~/mlv_dump --dng $f -o ${folder}/${folder}_;
    fi
done
Run Code Online (Sandbox Code Playgroud)
这可以轻松转换为 Windows 等效项吗?
谢谢,
托马斯
与编程语言之间的任何翻译一样,有 (a) 一种尽可能字面意义的方法,与 (b) 形成对比,一种不立即明显但在目标精神中的方法-语言方法。
(b) 从长远来看总是更可取的。
使用 PowerShell,因为它是“命令提示符”( cmd.exe) 及其批处理文件的远超后继者。
下面的代码是在PowerShell(v3+ 语法)中尝试 (b )。   
我鼓励您研究代码并在您自己的答案中发布对它的解释,以便其他人也可以受益。
为了帮助进行分析,请考虑以下资源:
本系列文章是对 PowerShell 的出色的、面向配方的介绍。
http://hyperpolyglot.org/shell以简洁的表格形式将 POSIX 类 shell 的语法bash与cmd.exe和 PowerShell的语法并列。
param(
  [Parameter(Mandatory, ValueFromRemainingArguments)]
  [System.IO.FileInfo[]] $LiteralPath
)
$outputBaseFolder = Split-Path -Parent $LiteralPath[0].FullName
foreach ($f in $LiteralPath) {
  if ($f.exists) {
    $outputFolder = Join-Path $outputBaseFolder $f.BaseName
    New-Item -ItemType Directory $outputFolder
    & "$HOME/mlv_dump" --dng $f.FullName -o "$outputFolder/$($f.BaseName)_"
  } else {
    Write-Warning "Item doesn't exist or is not a file: $($f.FullName)"
  }
}
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1151 次  |  
        
|   最近记录:  |