powershell - 如何在 CLI 界面 (PowerShell) 中选择多个文件
问题描述
我正在尝试将一些 gif 文件批量转换为动画 png 文件,但是,我的问题很清楚。如何将目录中的多个文件输入到 CLI 终端(我正在使用 PowerShell)?
我是一个初学者,所以我 99% 确定我在做一些愚蠢的事情。
我正在使用 gif 动画 png 程序(gif2apng)当我放类似的东西时它可以完美地工作
gif2apng -i file.gif -o output.png
我在那个目录中有多个 GIF,所以我使用了通配符
gif2apng -i *.gif
但是,我得到一个错误
Error: can't open the file '*.gif'
当我尝试选择多个图像(使用 Google 的程序 img2webp)时,我得到了这个确切的错误,而不是像这样写所有名称
img2webp -lossy 1.png 2.png 3.png 4.png 5.png 6.png -o output.png
而且只要写
img2webp -lossy *.png
请指导我
谢谢,哈西特
解决方案
与 POSIX 兼容的 shell(例如bash
在类 Unix 平台上)不同,Windows [1]上的 PowerShell不执行 globbing - 也就是说,它不会自动扩展为当前目录中具有扩展名的文件的名称*.gif
.gif
因此,通配符模式逐字*.gif
传递给,这似乎需要文字文件名,因此失败。gif2apng
解决方案是让 PowerShell使用cmdlet显式执行 globbing:Get-ChildItem
gif2apng -i (Get-ChildItem *.gif).Name -o output.png
Get-ChildItem *.gif
检索当前目录中所有带有扩展名.gif
的项目(如果您明确想要从匹配中排除目录-File
,您可以添加开关),作为System.IO.FileInfo
实例。(...).Name
返回它们的名称并将它们作为单独的参数传递给gif2apng
.
[1] 但是,在类 Unix 平台(macOS、Linux)上,PowerShell(Core} 7+确实为外部程序执行此自动通配符。
推荐阅读
- python - Jupyter 小部件 clear_output() 不起作用
- javascript - Web Audio API:为什么只能启动一次源?
- python - Matplotlib:不可能同时关闭轴和设置 facecolor?
- blockchain - 基于区块链的系统如何保证区块的不变性?
- android - RecyclerView、Fragment、Android 中的 java.lang.ClassCastException
- python - 获取 QTreeWidgetItem 的最顶层项
- npm - 如何在 Sails.js 中使用 import Leaflet?
- python - Pyspark:如何读取带有时间戳的 csv 文件?
- jquery - 带有正则表达式的jquery可排序表更新属性不起作用
- javascript - 似乎无法关注下一个 TextInput (React-Native)