2017-08-08 1 views
0

次のUnixスクリプトをWindows上で実行する必要があります。私はcdコマンドがdirを呼び出すように変更され、echoコマンドがprintに変更されたと仮定しています。UnixシェルスクリプトをWindowsバッチファイルに修正する方法は?

ファイルが存在しない場合、スクリプトはディレクトリをチェックし、ファイルが存在しない場合はスクリプトがループ/スリープしてから再度チェックします。

私は主に変数とループコマンドをどのように変換するのがベストなのでしょうか?ヒント/ヒントがあれば分かりますか?

cd $DIRECTORY_NAME 

echo "You are currently in $(pwd) directory" 

numfiles=0 

while [ $numfiles -lt "1" ] 

do 

    export filename=`ls SWIX_BAU_success` 
    export numfiles=$(echo $filename | wc -w) 
    echo "$numfiles file found" 

if [ $numfiles -ge "1" ] 

then 

    echo "$filename file found" 
    exit 0 

else 

    echo "Incorrect number of files found, 1 file expected" 
    numfiles=0 
    sleep 300 

fi 

done 
+1

SS64は、[Windowsバッチ( 'cmd')](https://ss64.com/nt)と[' bash'](https://ss64.com/bash/)の両方でまともな参照を持っています。変換を行う前にそれらをチェックしておきたいかもしれません。 Windowsのバッチの代わりにPowerShellを使用することも考えられます。 –

+0

[なぜ誰かが私を助けることができますか?実際の質問ではありませんか?](https://meta.stackoverflow.com/q/284236/354577) – Chris

答えて

0

あなたが質問を取り消したときに私はちょうどこの回答を投稿していました。
と仮定すると、SWIX_BAU_successは1つのファイルのみを持つ(サブ)ディレクトリです。

@Echo off 

cd /D "%DIRECTORY_NAME%" 
echo You are currently in directory: %CD% 
Set numfiles=0 

For /f "tokens=1,* delims=:" %%A in (
    'Dir /B "SWIX_BAU_success" ^| findstr /n^' 
) DO Set numfiles=%%a&Set filename=%%B 

If %numfiles% equ 1 (
    echo %filename% found 
    exit /B 0 
) else (
    echo "Incorrect number of files found, 1 file expected" 
    set numfiles=0 
    Timeout /T 300 
) 
+0

返信いただきありがとうございます、これは素晴らしいと私はまもなくそれをテストします。あなたの前提に関しては、 'SWIX_BAU_success'はファイル名であり、ディレクトリではありません。 ファイルが存在するディレクトリは、 'cd/D"%DIRECTORY_NAME% "' – Harp

+0

の場所です。一度だけ存在する可能性のある別個のファイル名であれば、もし存在すれば単純な 'SWIX_BAU_success '(..) (...) ' – LotPings

関連する問題