[英]Translating OS X Bash Script for Windows
我使用对冲传输佳能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等效语言吗?
谢谢,
汤玛士
与在编程语言之间进行任何翻译一样,有(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)"
}
}
容易,是针对个人技能的相对答案,正如其他人所评论的那样,没有开箱即用的东西/工具可以使用或购买。 所有这些都是手工工作,使用指针和其他尝试查看可以收集到的内容来完成用例的人。
例如,在您的区块中...
filename=${f##*/};
folder=${filename%.*}
mkdir "${folder}";
...很容易翻译成...
$filename='PathToFileName'
$foldername='PathToFolder'
mkdir 'FolderName'
现在,这种翻译真的很简单,显然还不完整。 使用指向的资源和PowerShell内置帮助文件以及这些示例,您必须弄清楚这一点。
这个论坛上有几篇关于转换主题的文章,以及其他人如何达成共识。
例如,下面将重点介绍完成X或Y所需遍历的工作。
将简单的Bash脚本转换为PowerShell?
我希望将此bash代码移植到PowerShell。 任何人都可以在此方面了解一些PowerShell吗?
将bash脚本转换为Windows脚本
我有以下Unix shell脚本。 我想将其转换为Windows .bat文件(我知道我可以使用Cygwin而不是使其适应Windows环境。但是Cygwin不是我的选择)。
将xargs Bash命令转换为PowerShell?
我有一个简单的Bash命令,可以使用ImageMagick在低流量的网站上自动调整一些图像的大小-我想将其转换为PowerShell命令,因此不必在我的Web服务器上安装Cygwin。
如前所述,有支付途径的费用,甚至是可能成为途径的在线费用。
但是,您实际上应该多读一些有关如何做特定事情的知识,例如:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.