私は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
ファイルを実行するようにする方法は?
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
ファイルで別のbat
fileを実行するために使用している場合は、call c:\file.bat
..を使用します。
[√]cmd
[√]cmd/MS Docs
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"
/b
はstart
に新しいcmd
ウィンドウを開かないように指示し、""
は"c:\Arch\Upload from DB to Redcap.py"
をタイトルとして解釈しないようにします。