web-dev-qa-db-ja.com

バッチファイルから実行中のファイル

私はWindows10で作業しています。

これは.batファイルに保存された私のコードです:

%windir%\System32\cmd.exe "/K" C:\Users\Alex\AppData\Local\Continuum\anaconda3\Scripts\activate.bat C:\Users\Alex\AppData\Local\Continuum\anaconda3

"c:\Arch\Upload from DB to Redcap.py"

コマンドプロンプト(cmd)を手動で開き、各行を実行すると、すべて正常に機能します。しかし、上記の内容で.batファイルを実行すると、1行目は正常に実行されますが、2行目は現在のフォルダーをc:\Arch\フォルダーに変更するだけで、Upload from DB to Redcap.pyファイルは実行されません。コードを修正して、コードの2行目がUpload from DB to Redcap.pyにあるc:\Arch\Upload from DB to Redcap.pyファイルを実行するようにする方法は?

1
vasili111
  • cmd /keep vs cmd /continue

/kを使用していて、引用符が不要な場合は、exitコマンドを入力するまで、bat/cmdの次のコマンドは実行されません。

cmd /keep "インタプリタ"を開始し、それを離れたり、終了したり、閉じたりしませんでした。この後、次のコマンドが実行されます。

'cmd/k'と入力して新しいインタープリターを開いてターミナルを使用すると、ターミナルと直接対話しているため、ターミナルが機能します。この場合、batの場合、機能するonli行は次のとおりです。cmd /k "...\enable.bat"、のbatファイル同じ行にあるため、コマンドも実行されます。

バットでは、cmd / k somefile.bat [or] some commandは新しいインタープリターを開始し、exitと入力するか、現在のcmdウィンドウを閉じるまで入力用に開いたままにします。それ以外の場合は、コマンドを実行するために1つ以上のコマンドを挿入するのを待ち続け、コードでは、次の実行は次の行にあります:( "C:\ Arch\Upload from DB to Redcap.py")、itこの現在のインタプリタに入力するか、exitと入力して終了し、前のインタプリタに戻るまで、次の行のコマンドを実行しない限り、実行されません。

cmd /cに置き換えてみてください。そうすれば、インタプリタはコードを1行ずつ実行します...

しかし、彼のbat/cmdを実行するのはcmd呼び出しでさえないと思います。


コマンドインタプリタ(cmd.exe)は、実行するだけでbat/cmdを実行します。または、クリックしたときに、batスクリプトを実行するために特定の命令を追加する必要はありません。

以下のコードをfile.batとして保存し、以下を試してください。

@echo off 

cd /d "%UserProfile%\AppData\Local\Continuum\Anaconda3" 
call .\Scripts\Activate.bat "%UserProfile%\AppData\Local\Continuum\Anaconda3" 

py "c:\Arch\Upload from DB to Redcap.py"

さらに、あるbatファイルで別のbatfileを実行するために使用している場合は、call c:\file.bat ..を使用します。

[√]cmd

[√]cmd/MS Docs

[√]batファイル内で複数のbatファイルを実行する方法

1
It Wasn't Me

Python.exeがPATHにある場合は、問題のある行の前にpython.exeを追加してみてください。

python.exe "c:\Arch\Upload from DB to Redcap.py"

別のオプションは、startコマンドを使用することです。

start /b "" "c:\Arch\Upload from DB to Redcap.py"

/bstartに新しいcmdウィンドウを開かないように指示し、"""c:\Arch\Upload from DB to Redcap.py"をタイトルとして解釈しないようにします。

2
Jesper