我使用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
这可以轻松转换为Windows等价物吗?
谢谢,
托马斯
答案 0 :(得分:1)
与编程语言之间的任何翻译一样,有(a) as-literal-as-possible 方法,与(b)形成对比,不是很明显的 - 但是 - 目标精神语言方法 (b)从长远来看总是优先的。
使用PowerShell ,因为它是 - 远远优于 - "命令提示符" (cmd.exe
)及其批处理文件
下面的代码是(b)在 PowerShell (v3 +语法)中的尝试。
我鼓励您研究代码,并在自己的答案中发布对代码的解释,以便其他人也可以从中受益。
要帮助进行分析,请考虑以下资源:
official Windows PowerShell get-started page及PowerShell Core的等效内容。
这个series of articles是一个很好的,面向配方的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)"
}
}
答案 1 :(得分:1)
简单,是一个针对个人技能的相对答案,正如其他人所评论的那样,没有开箱即用的东西/工具可以使用或购买来做到这一点。这是所有手动工作,使用指针和其他人试图了解你可以收集到什么来完成你的用例。
例如,在你的街区......
filename=${f##*/};
folder=${filename%.*}
mkdir "${folder}";
...很容易翻译成......
$filename='PathToFileName'
$foldername='PathToFolder'
mkdir 'FolderName'
现在,翻译真的很简单,显然不完整。这是您必须要弄清楚的,使用指向的资源和PowerShell内置帮助文件以及这些示例。
在这个论坛上有几个关于这个转换主题的帖子,以及其他人如何达成共识哦,如果有什么可以做的话。
例如,下面将重点介绍完成X或Y所需的遍历工作。
将简单的Bash脚本转换为PowerShell?
我希望将此bash代码移植到PowerShell。任何人都可以流下 一些PowerShell点亮了这个?
Convert simple Bash script to PowerShell?
将bash脚本转换为Windows脚本
我有以下Unix shell脚本。我想转换这个 到Windows .bat文件(我知道我可以使用Cygwin而不是适应 它到Windows环境。但Cygwin对我来说不是一个选择。)
Convert bash script into Windows script
将xargs Bash命令转换为PowerShell?
我有一个简单的Bash命令可以自动调整某些图像的大小 使用ImageMagick的低流量网站 - 我想将其转换为 一个PowerShell命令,所以我不必在我的上安装Cygwin 网络服务器。
如上所述,有些途径/甚至是在线的人可能会成为一种途径。
但是,你应该多读一些关于如何做特定事情的事情,比如..