调用可执行文件在所有文件夹 cmd 或 powershell 中执行命令
Call a executable to execute command in all folders cmd or powershell
我正在对我的工具使用这个 .bat 命令。
rip_images.exe是一个合并图片的工具
rip_images.exe -c 1 00000001.jpg 00000002.jpg 00000003.jpg 00000004.jpg -o out.png
rip_images.exe -c 1 00000001.bmp 00000002.bmp 00000003.bmp 00000004.bmp -o out.bmp
如果我将这些文件放在可执行文件的同一文件夹中,就可以正常工作。
我需要一个在文件夹中搜索 .jpg 和 bmp 并在每个文件夹中执行 .exe 的命令,分别给出每个文件夹中的合并文件。
命令或电源外壳。
我在 powershell
中尝试过类似的东西
Powershell "Get-ChildItem -File -Filter *bmp |ForEach-Object
{.\rip_image.exe -c 1 $_.FullName}"
但它是逐个文件进行的,需要保存变量之类的东西来放入参数
也许是 /r?
示例:
rip_images.exe -c 1 var1 var2 var3 var4 -o out.bmp
感谢关注
如果您尝试通过调用 powershell.exe
从 CMD 运行 执行此操作,那么这很可能会失败。但是,您可以将其存储为 .ps1
文件并使用 powershell -File path\to\script.ps1
.
您可以使用 Group-Object
按扩展名对文件进行分组,然后将那组对象的 FullName
传递给您的二进制文件:
Get-ChildItem -Directory | ForEach-Object {
Get-ChildItem $_ -File |
Where-Object { $_.Extension -in '.bmp', '.png' } |
Group-Object Extension | ForEach-Object {
# $_.Name is the extension here
$folderName = $_.Group.Directory[0]
.\rip_image.exe -c 1 $_.Group.FullName -o "$folderName out$($_.Name)"
}
}
我正在对我的工具使用这个 .bat 命令。 rip_images.exe是一个合并图片的工具
rip_images.exe -c 1 00000001.jpg 00000002.jpg 00000003.jpg 00000004.jpg -o out.png
rip_images.exe -c 1 00000001.bmp 00000002.bmp 00000003.bmp 00000004.bmp -o out.bmp
如果我将这些文件放在可执行文件的同一文件夹中,就可以正常工作。
我需要一个在文件夹中搜索 .jpg 和 bmp 并在每个文件夹中执行 .exe 的命令,分别给出每个文件夹中的合并文件。 命令或电源外壳。 我在 powershell
中尝试过类似的东西Powershell "Get-ChildItem -File -Filter *bmp |ForEach-Object
{.\rip_image.exe -c 1 $_.FullName}"
但它是逐个文件进行的,需要保存变量之类的东西来放入参数 也许是 /r?
示例:
rip_images.exe -c 1 var1 var2 var3 var4 -o out.bmp
感谢关注
如果您尝试通过调用 powershell.exe
从 CMD 运行 执行此操作,那么这很可能会失败。但是,您可以将其存储为 .ps1
文件并使用 powershell -File path\to\script.ps1
.
您可以使用 Group-Object
按扩展名对文件进行分组,然后将那组对象的 FullName
传递给您的二进制文件:
Get-ChildItem -Directory | ForEach-Object {
Get-ChildItem $_ -File |
Where-Object { $_.Extension -in '.bmp', '.png' } |
Group-Object Extension | ForEach-Object {
# $_.Name is the extension here
$folderName = $_.Group.Directory[0]
.\rip_image.exe -c 1 $_.Group.FullName -o "$folderName out$($_.Name)"
}
}