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)을 실행 하고 필요에 따라 필요한 인수 파일을 전달하지만 문제는 인수 파일 자체가 자신과 관련된 다른 파일을 가리키고 있으며이 두 번째 파일을 찾을 수 없다는 것입니다.
이것이 인수 파일 내의 두 번째 파일이 해결 한 방법입니다.

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

현재 적용 할 수 없으며, 두 폴더 모두 많은 것을 포함합니다.
Breeze

고맙지 만 현재 적용 할 수는 없습니다. 다른 방법을 시도해보고 의도
Breeze

솔루션이 포함 된 답변을 왜 삭제 했습니까?
DavidPostill

@DavidPostill, NOLFXceptMe가 이미 답변을 게시 한 것을 알았습니다. 완전히 정확하지는 않지만 그의 답변을 받아들이고 필요한 수정을 적용하고 완벽하게 만드는 것이 좋습니다.
Breeze

답변:


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

pause

그것은 쉘 스크립트의 이상적인 변환이어야합니다. 우리는 항상 루트 폴더에 머 무르므로 인수로 제공된 파일 내부의 경로를 올바르게 참조해야합니다.


예, 감사합니다. 그러나 cd ../../처음 에는 명령 이 누락되어 있거나 그렇지 않으면 작동하지 않습니다.
Breeze

쉘 스크립트는 최상위 폴더에 있어야합니다. 그것을 안에 넣는 Build/x64/Release것은 나쁜 습관입니다.
NOLFXceptMe

왜 나쁜 습관입니까?
Breeze

그런데이 스크립트를 루트에서 실행해야하거나 그렇지 않으면 작동하지 않을 것입니다 (실제 bat 파일이있는 하위 디렉토리에서 호출 된 경우).
Breeze

그런데 여기에 약간의 문제가 있습니다.이 스크립트를 루트 sth에서 다음과 같이 실행할 때 (T : \ Git \ CaffeRoot> data \ mnist \ get_mnist_data.bat` 파일은 mnist 폴더에 저장되지 않습니다. 이 문제를 해결하는 방법
Breeze

0

가능한 해결책은 전체 Cifar10 폴더를 적절한 위치에 복제하는 것입니다.


실용적인 해결책은 아닙니다. 그러나 어쨌든 감사합니다
Breeze

이 프로그램의 논리를 모르겠습니다. 두 번째 (텍스트) 파일의 위치가 중요하지 않다면이 파일을 프로그램이 액세스 할 수 있기를 기대하는 위치에 복사 할 수 있다고 생각했습니다. 그것이 중요하다면 이것은 사실이 아닙니다.
Oleg Bolden

실제로, 폴더에는 많은 것들이 포함되어 있으며 그것들을 옮기는 것이 전혀 논리적이지 않습니다. 그래서 내가 처음에 이것을 물었던 이유는 리눅스에서 문제가 없으며 모든 것이 예상대로 작동하지만 Windows에서는 내가 생각할 때까지 조금 벗어났습니다. out out now :)
Breeze

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.