convertendo um simples script sh para o script em lote equivalente no windows

0

Este é o script que eu preciso converter em arquivo de lote no Windows:

#!/usr/bin/env sh

TOOLS=./build/tools

$TOOLS/caffe train \
    --solver=examples/cifar10/cifar10_full_relu_solver_bn.prototxt

este é o script que eu criei até agora:

REM go to the caffe root
cd ../../Build/x64/Release
caffe.exe train --solver=../../../examples/cifar10/cifar10_full_relu_solver_bn.prototxt

pause

Isso executa o executável ( caffe.exe ) e passa o arquivo de argumento necessário conforme necessário, mas o problema é que o próprio arquivo de argumento está apontando para outro arquivo que é relativo a ele mesmo e esse segundo arquivo não foi encontrado. > É assim que o segundo arquivo dentro do nosso arquivo de argumentos é endereçado:

net: "examples/cifar10/cifar10_full_relu_train_test_bn.prototxt"

Para tornar as coisas mais claras, a hierarquia das pastas é assim:

|Build 
   |--X64
      |--Release
         |--caffe.exe
|Examples
   |--Cifar10
      |-- cifar10_full_relu_solver_bn.prototxt
      |-- Cifar10_train_test.prototxt
      |-- other files as well

minha pergunta é, existe uma maneira que eu possa usar para que eu não precise alterar todos os endereços de arquivos relativos também?

    
por Breeze 31.03.2016 / 09:03

3 respostas

1
SET TOOLS=Build/x64/Release
%TOOLS%/caffe.exe train --solver=examples/cifar10/cifar10_full_relu_solver_bn.prototxt

pause

Essa deve ser a conversão ideal do script de shell. Nós sempre ficamos na pasta raiz, então os caminhos dentro do arquivo fornecido como argumento devem ser referenciados corretamente.

    
por 31.03.2016 / 14:05
0

A possível solução é duplicar toda a pasta Cifar10 para o local adequado.

    
por 31.03.2016 / 09:42
0

Atualização:

Aqui está uma nota, esse script é para quando você deseja executar um arquivo em lote, digamos, clicando duas vezes nele diretamente. (Quero dizer, executar o arquivo em lote diretamente do diretório (sub) em que ele reside.
mas se você pretende chamá-lo da raiz de suas pastas, você precisa ver a resposta aceita. Também deixo minha resposta aqui, caso isso possa ser útil para alguns outros.

Resposta real

Eu mesmo estou usando o método padrão que é aceito como a resposta.
Graças a Deus, finalmente consegui trabalhar, o script em lote equivalente é o seguinte:

REM go to the caffe root
cd ../../

set BIN=build/x64/Release

"%BIN%/caffe.exe" train --solver=examples/cifar10/cifar10_full_relu_solver_bn.prototxt

pause

usando isso, não preciso mais alterar nada.

    
por 31.03.2016 / 17:30