você sabe se existe uma maneira simples de executar o comando FOR no arquivo em lotes em vários segmentos? Qual é o sentido de ter 4 núcleos se não consigo executar minhas tarefas em 4 threads paralelos?
Por exemplo, se eu estiver otimizando PNGs com PNGOUT, o comando que eu usaria é
for %i in (*.png) do pngout "%i"
Mas essa é uma tarefa altamente paralelizável, na qual as subtarefas não dependem uma da outra.
Para executar isso em 4 'filas', eu escreveria algo como
for -thread 4 %i in (*.png) do pngout "%i"
Preciso escrever meu próprio aplicativo semelhante que possa fazer isso ou existe uma solução gratuita disponível?
batch
automation
Axarydax
fonte
fonte
Respostas:
Eu escrevi um arquivo em lotes que executa somente um número máximo de comandos há um tempo atrás no Stack Overflow: A execução paralela dos processos de shell :
fonte
find /c /v ""
.Os arquivos em lote destinam-se a scripts extremamente básicos e não suportam nenhum tipo de multithreading. Você precisaria escrever seu próprio utilitário para fazer o que deseja realizar.
Como alternativa, o Windows PowerShell pode fornecer mais recursos para você se aproximar de seu objetivo.
Se você simplesmente deseja executar várias operações ao mesmo tempo, pode usar o comando start para iniciar o utilitário PNGOUT em uma nova janela. O loop FOR continuará sem aguardar a conclusão de cada operação.
A linha modificada ficaria assim:
No entanto, observe que isso efetivamente iniciará o PNGOUT para TODOS os arquivos no diretório ao mesmo tempo, o que provavelmente não é desejável.
fonte