为 Windows 翻译 OS X Bash 脚本



我使用Hedge传输在我的佳能5D Mark III上拍摄的魔灯视频文件。

在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等价物吗?

谢谢,
托马斯

与编程语言之间的任何翻译一样,有(a)一种尽可能字面的方法,与(b)形成对比,这是一种不立即明显但符合目标语言精神的方法。
(b) 从长远来看总是更可取的。

使用PowerShell,因为它是"命令提示符"(cmd.exe)及其批处理文件的后继者。
下面的代码是PowerShell(v3+语法)中(b)的尝试。

我鼓励您研究代码并在您自己的答案中发布对它的解释,以便其他人也可以受益。

为了帮助进行分析,请考虑以下资源

  • 官方的Windows PowerShell入门页面和PowerShellCore的等效页面。

  • 本系列文章是对 PowerShell 的精彩、面向配方的介绍。

  • http://hyperpolyglot.org/shell 以简洁的表格形式将类似POSIX的shell(如bash)的语法与cmd.exe和PowerShell的语法并置。

代码的 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)"
}
}

简单,是特定于个人技能的相对答案,正如其他人所评论的那样,没有开箱即用的东西/工具可以使用或购买来做到这一点。这都是手动工作,使用指针和其他试图查看您可以收集哪些内容来完成您的用例的人。

例如,这个,在你的块...

filename=${f##*/};
folder=${filename%.*}
mkdir "${folder}";

。很容易翻译成...

$filename='PathToFileName'
$foldername='PathToFolder'
mkdir 'FolderName'

现在,这种翻译真的很简单,显然不完整。这是你必须弄清楚的事情,使用指向的资源和PowerShell内置帮助文件和这些示例。

在这个论坛上有几个关于这个转换主题的帖子,以及其他人如何达成共识哦,如果可以做任何事情。

例如,下面将突出显示完成 X 或 Y 所需的遍历工作。

将简单的Bash脚本转换为PowerShell?

我希望将此bash代码移植到PowerShell。任何人都可以脱落 这个上有一些PowerShell灯?

将简单的Bash脚本转换为PowerShell?

将 bash 脚本转换为 Windows 脚本

我有以下Unix shell脚本。我想转换这个 到 Windows .bat 文件中(我知道我可以使用 Cygwin 而不是适应 它到一个Windows环境。但天鹅座对我来说不是一个选择)。

将 bash 脚本转换为 Windows 脚本

将 xargs Bash 命令转换为 PowerShell?

我有一个简单的 Bash 命令来自动调整一些图像的大小 一个使用ImageMagick的低流量网站 - 我想将其转换为 一个PowerShell命令,所以我不必在我的平台上安装Cygwin。 网络服务器。

将 xargs Bash 命令转换为 PowerShell?

如前所述,有付费的途径/甚至是在线途径,他们可能成为一条途径。

但是,你真的应该多读一些关于如何做具体的事情,比如......

  • 创建文件和文件夹
  • 访问/读取文件,导入文件,过滤文件
  • 循环
  • 运算符(比较和分配)
  • 导航文件系统/PSDrive

最新更新