windows - 如何在长 PowerShell 命令中使用变量而不破坏命令
问题描述
我想使用 ffmpeg 将 .m4a 文件转换为 .mp3 文件。
我可以为每个文件都这样做,但这需要花费很多精力才能输入。
ffmpeg -i '.\song.m4a' -ac 2 -b:a 192k '.\song.mp3'
有没有办法使用powershell使用变量来做到这一点?前任:
ffmpeg -i $v -ac 2 -b:a 192k $v.mp3
这样做的问题是,该-ac
标志被视为路径的一部分,而不是 ffmpeg 的一部分。
在powershell中有没有办法解决这个问题?
或者这可以用数组来完成吗?如果我$v=Get-ChildItem -Name
在 ffmpeg 命令中使用 foreach 循环并在数组上进行迭代。
我对 PowerShell 很陌生,没有很多经验,但在我看来应该可以做到。
我会很感激我能得到的任何帮助。
解决方案
如果你只是这样做,除非你用替换语句等来处理它,否则你Get-Childitem -Name
最终会得到song.m4a.mp3
。如果你把它作为一个对象,那么你可以引用名称,然后再引用基本名称。
get-childitem -Filter *.m4a |
foreach {ffmpeg -i “$($_.name)“ -ac 2 -b:a 192k “$($_.basename).mp3”}
我没有对此进行测试,因此您可能需要调整报价。
推荐阅读
- elasticsearch - ElasticSearch - 以任何顺序匹配所有术语
- websocket - websocket发送方法的第二个参数是什么
- java - 如何以类型安全的方式运行 Hibernate NativeQuery 而不是返回 Object[]
- php - 未附加调试器 - Xdebug - Atom (php)
- javascript - 为什么 CSS 自定义属性的级联不起作用?
- ios - 向内移动 UIStackView 的内容
- java - 减少列表
使用 BiFunction > - ios - 何时设置更改 heightForRowAt UITableView 动画被破坏
- sql - 根据定义的月份和阈值比较并获取插入到表中的新数据
- apache - 使用 .htaccess 从许多子域重定向 URL