Windowsで単純なshスクリプトを同等のバッチスクリプトに変換する


0

これは、Windowsでバッチファイルに変換する必要があるスクリプトです。

#!/usr/bin/env sh

TOOLS=./build/tools

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

これは私がこれまでに思いついたスクリプトです:

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

pause

これにより、実行可能ファイル(caffe.exe)が実行され、必要に応じて必要な引数ファイルが渡されますが、問題は引数ファイル自体がそれ自体に関連する別のファイルを指し、この2番目のファイルが見つからないことです。
これが、引数ファイル内の2番目のファイルの対処方法です。

net: "examples/cifar10/cifar10_full_relu_train_test_bn.prototxt"

物事をより明確にするために、フォルダーの階層は次のようになります。

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

私の質問は、すべての相対ファイルアドレスも変更する必要がないように使用できる方法はありますか?


caffe.exeあなたのパスに入れてください。バッチファイルでcd examples
DavidPostill

現時点では適用されませんが、両方のフォルダに多くのものが含まれています。
ブリーズ

おかげしかし現時点では、その適用できない、私はいくつかの他の方法を試してみて、私は私が意図した方法でそれを得ることができるかどうか
ブリーズ

ソリューションを含む回答を削除したのはなぜですか?
DavidPostill

@DavidPostill、私はNOLFXceptMeがすでに答えを投稿していることに気づきましたが、完全に正しいわけではありませんが、彼の答えを受け入れ、必要な修正を適用して完璧にするのは良いアイデアだと思いました。
ブリーズ

回答:


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

pause

これは、シェルスクリプトの理想的な変換になります。常にルートフォルダーにとどまるため、引数として提供されるファイル内のパスは正しく参照される必要があります。


はい、ありますがcd ../../、最初からコマンドが抜けているか、そうでなければうまくいきません。
ブリーズ

シェルスクリプトは最上位フォルダーにある必要があります。内部に配置するのBuild/x64/Releaseは悪い習慣です。
NOLFXceptMe

なぜそれは悪い習慣ですか?
ブリーズ

ところで、このスクリプトをルートから実行するか、それ以外の場合は動作しない(実際のbatファイルが存在するサブディレクトリから呼び出された場合)という通知を追加できれば幸いです。
ブリーズ

ここで少し問題がありますが、このスクリプトをルートsthから実行すると(T:\ Git \ CaffeRoot> data \ mnist \ get_mnist_data.bat`ファイルはmnistフォルダー内に保存されず、 !この問題を解決する方法が間違っているルートフォルダ?
ブリーズ

0

可能な解決策は、Cifar10フォルダー全体を適切な場所に複製することです。


実用的なソリューションではありません。とにかくありがとう
Breeze

このプログラムのロジックがわかりません。2番目の(テキスト)ファイルがどこにあるかが問題にならなければ、このファイルをプログラムがアクセスできるようにするためにプログラムが期待する場所にコピーできると思いました。それが問題であれば、これは事実ではありません。
オレグボールデン

実際、フォルダには多くのものが含まれており、それらを移動することはまったく論理的ではないため、最初にこれを尋ねた理由は、Linuxでは問題ありません、すべてが期待どおりに動作しますが、Windowsでは私がそれを理解するまで少し離れていましたちょうど今::ところでありがとう
ブリーズ

0

更新:

ここに注意してください。このスクリプトは、バッチファイルを直接ダブルクリックするなどしてバッチファイルを実行する場合に使用します。(バッチファイル
が存在する(サブ)ディレクトリから直接実行することを意味します。ただし、フォルダーのルートから呼び出す場合は、受け入れられた回答を確認する必要があります。他の人にとっては便利かもしれません。

実際の回答

私自身は、答えとして受け入れられている標準的な方法を使用しています。
親愛なる神のおかげで、ようやく機能しました。実際の同等のバッチスクリプトは次のとおりです。

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

これを使用して、何も変更する必要がなくなりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.