web-dev-qa-db-ja.com

.batファイルを実行するコマンド

Visual Studioビルドスクリプトに、重要なことを行う.batファイルを実行させようとしています。

これが私が今やりたいことです:

cd "F:\- Big Packets -\kitterengine\Common\" Template.bat

しかし、それは機能しません。

私はそれを機能させるためにこれをしなければなりません:

cd "F:\- Big Packets -\kitterengine\Common\"
F:
Template.bat

しかし、これをVisual Studioスクリプトに追加するのはかなり困難です。

これを1行で行うにはどうすればよいですか?

19
BingBang32

ここを参照できます: https://ss64.com/nt/start.html

start "" /D F:\- Big Packets -\kitterengine\Common\ /W Template.bat
4
jwgan

"F:\- Big Packets -\kitterengine\Common\Template.bat"の先頭にはcallが付いている場合があります(call /?を参照)。またはCd /d "F:\- Big Packets -\kitterengine\Common\" & Template.bat


CMDチートシート

  • Cmd.exe

  • ヘルプを得る

  • 句読点

  • ファイルの命名

  • プログラムを開始する

  • キー

CMD.exe

最初に覚えておくべきことは、コンピューターの操作方法です。 WIMP(Windows、アイコン、マウス、ポップアップメニュー)が一般的になる前に行った方法です。 CPM、VMS、およびUnixにルーツがあります。プログラムを起動し、ファイルをコピーおよび削除するために使用されました。また、時刻と日付を変更できます。

CMDの起動に関するヘルプについては、cmd /?と入力してください。入力するだけの場合を除き、/kまたは/cスイッチで開始する必要があります。

ヘルプの取得

一般的なヘルプ。コマンドプロンプトにHelpと入力します。リストされたコマンドごとに、help <command>(例:help dir)または<command> /?(例:dir /?)を入力します。

一部のコマンドにはサブコマンドがあります。たとえば、schtasks /create /?

NETコマンドのヘルプは珍しいです。 Net Use /?と入力するのは簡単なヘルプです。完全なヘルプを表示するには、net help useと入力します。ルートでも同じことが適用されます-net /?も簡単なヘルプです。net helpを使用してください。

ヘルプの新しい動作への参照は、OS/2およびWindows NT4のCMDからWindows 2000以降の現在のCMDへの変更を説明しています。

WMICは多目的コマンドです。 wmic /?と入力します。


句読点

&    seperates commands on a line.

&&    executes this command only if previous command's errorlevel is 0.

||    (not used above) executes this command only if previous command's 
errorlevel is NOT 0

>    output to a file

>>    append output to a file

<    input from a file

2> Redirects command error output to the file specified. (0 is StdInput, 1 is StdOutput, and 2 is StdError)

2>&1 Redirects command error output to the same location as command output. 

|    output of one command into the input of another command

^    escapes any of the above, including itself, if needed to be passed 
to a program

"    parameters with spaces must be enclosed in quotes

+ used with copy to concatenate files. E.G. copy file1+file2 newfile

, used with copy to indicate missing parameters. This updates the files 
modified date. E.G. copy /b file1,,

%variablename% a inbuilt or user set environmental variable

!variablename! a user set environmental variable expanded at execution 
time, turned with SelLocal EnableDelayedExpansion command

%<number> (%1) the nth command line parameter passed to a batch file. %0 
is the batchfile's name.

%* (%*) the entire command line.

%CMDCMDLINE% - expands to the original command line that invoked the
Command Processor (from set /?).

%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. 
Single % sign at command Prompt and double % sign in a batch file.

\\ (\\servername\sharename\folder\file.ext) access files and folders via UNC naming.

: (win.ini:streamname) accesses an alternative Steam. Also separates drive from rest of path.

. (win.ini) the LAST dot in a file path separates the name from extension

. (dir .\*.txt) the current directory

.. (cd ..) the parent directory


\\?\ (\\?\c:\windows\win.ini) When a file path is prefixed with \\?\ filename checks are turned off. 

命名ファイル

< > : " / \ | Reserved characters. May not be used in filenames.



Reserved names. These refer to devices eg, 

copy filename con 

which copies a file to the console window.

CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, 

COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, 

LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9

CONIN$, CONOUT$, CONERR$

--------------------------------

Maximum path length              260 characters
Maximum path length (\\?\)      32,767 characters (approx - some rare characters use 2 characters of storage)
Maximum filename length        255 characters

プログラムの開始

3つの方法すべてのヘルプについては、start /?およびcall /?を参照してください。

Windowsプログラムには、コンソールと非コンソールの2つのタイプがあります(これらは、GUIがなくてもGUIと呼ばれます)。コンソールプログラムが現在のコンソールに接続するか、Windowsが新しいコンソールを作成します。 GUIプログラムは、独自のウィンドウを明示的に作成する必要があります。

フルパスが指定されていない場合、Windowsは

  1. アプリケーションのロード元のディレクトリ。

  2. 親プロセスの現在のディレクトリ。

  3. Windows NT/2000/XP:32ビットWindowsシステムディレクトリ。 GetSystemDirectory関数を使用して、このディレクトリのパスを取得します。このディレクトリの名前はSystem32です。

  4. Windows NT/2000/XP:16ビットWindowsシステムディレクトリ。このディレクトリのパスを取得する関数はありませんが、検索されます。このディレクトリの名前はSystemです。

  5. Windowsディレクトリ。 GetWindowsDirectory関数を使用して、このディレクトリのパスを取得します。

  6. PATH環境変数にリストされているディレクトリ。

プログラム名を指定

これは、プログラムを開始する標準的な方法です。

c:\windows\notepad.exe

バッチファイルでは、バッチはプログラムが終了するまで待機します。コマンドを入力すると、プロンプトはグラフィカルプログラムの終了を待機しません。

プログラムがバッチファイルの場合、コントロールが転送され、呼び出し元の残りのバッチファイルは実行されません。

開始コマンドを使用

Startは、非標準的な方法でプログラムを開始します。

start "" c:\windows\notepad.exe

Startはプログラムを開始し、待機しません。コンソールプログラムは新しいウィンドウで起動します。 /bスイッチを使用すると、コンソールプログラムが強制的に同じウィンドウに表示され、Startの主な目的が無効になります。

Startは、Windowsグラフィカルシェルを使用します-WinKey + R(Runダイアログ)で入力するのと同じです。試して

start Shell:cache

また、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Pathsに登録されているプログラム名も、フルパスを指定せずに入力できます。

また、最初の引用符がある場合は、それをウィンドウのタイトルにする必要があることに注意してください。

呼び出しコマンドを使用

呼び出しは、バッチファイルを開始し、それらが終了して現在のバッチファイルを続行するのを待つために使用されます。

その他のファイル名

プログラム以外のファイル名を入力することは、ファイルをダブルクリックすることと同じです。


キー

Ctrl + Cコンソールウィンドウを終了せずにプログラムを終了します。

その他の編集キーの場合は、Doskey /?と入力します。

  •  そして  コマンドを呼び出す

  • ESC コマンドラインをクリアします

  • F7 コマンド履歴を表示します

  • ALT+F7 コマンド履歴をクリアします

  • F8 コマンド履歴を検索します

  • F9 番号でコマンドを選択します

  • ALT+F10 マクロ定義をクリアします

またリストされていません

  • Ctrl + または 一度に単語を移動します

  • Ctrl + Backspace 前のWordを削除します

  • Home 行頭

  • End 行末

  • Ctrl + End 行末まで削除します

28
user6017774

このタスクを解決する多くの可能性があります。

1.絶対パスでバッチファイルを実行します

最も簡単な解決策は、フルパスでバッチファイルを実行することです

"F:\- Big Packets -\kitterengine\Common\Template.bat"

バッチファイルTemplate.batの最後に到達すると、上記のコマンドラインが* .batまたは* .cmdファイル内にある場合、前のスクリプトに戻りません。

バッチファイルTemplate.batの現在のディレクトリは、現在のプロセスの現在のディレクトリです。 Template.batの場合、このバッチファイルのディレクトリが現在のディレクトリである必要がある場合、バッチファイルTemplate.batは、次のコマンドラインの2行目として@echo offの後に含める必要があります。

cd /D "%~dp0"

コマンドプロンプトウィンドウcd /?で実行すると、パラメータ/Dを説明するこのコマンドのヘルプが表示されます...別のドライブの指定されたディレクトリに変更します。

コマンドプロンプトウィンドウcall /?で実行して、2.、4、および5ソリューションでも使用されるこのコマンドのヘルプを表示し、%~dp0 ...ドライブとバッチファイルの名前である引数0のパスを説明します。

2.絶対パスでバッチファイルを呼び出す

別の解決策は、フルパスでバッチファイルを呼び出すことです。

call "F:\- Big Packets -\kitterengine\Common\Template.bat"

最初のソリューションとの違いは、バッチファイルTemplate.batの終わりに達した後、このコマンドラインを含むバッチスクリプトでバッチ処理が続行されることです。

現在のディレクトリについては上記をお読みください。

3. 1つのコマンドラインでディレクトリを変更し、バッチファイルを実行する

1つのコマンドラインで複数のコマンドを実行するための3つの演算子があります:&&&||
詳細については、 Windowsバッチファイルを使用した複数のコマンドを含む単一行の回答を参照してください

このタスクには&&演算子をお勧めします。

cd /D "F:\- Big Packets -\kitterengine\Common" && Template.bat

最初のソリューションと同様に、これが* .batまたは* .cmdファイルであり、Template.batでのディレクトリの変更とバッチ処理の継続が成功した場合、現在のスクリプトには戻りません。

4. 1つのコマンドラインでディレクトリとCALLバッチファイルを変更する

このコマンドラインはディレクトリを変更し、成功するとバッチファイルを呼び出します

cd /D "F:\- Big Packets -\kitterengine\Common" && call Template.bat

3番目のソリューションとの違いは、Template.batの終了処理で現在のバッチスクリプトに戻ることです。

5. 1つのコマンドラインで現在の環境を維持しながら、ディレクトリとCALLバッチファイルを変更する

上記の4つのソリューションは現在のディレクトリを変更し、Template.batが何を行うかは不明です。

  1. カレントディレクトリ
  2. 環境変数
  3. コマンド拡張状態
  4. 遅延拡張状態

現在の* .batまたは* .cmdスクリプトの環境を、Template.bat自体の環境の変更によって変更されないようにすることが重要な場合は、setlocalおよびendlocalを使用することをお勧めします。

これら2つのコマンドのヘルプを表示するには、コマンドプロンプトウィンドウsetlocal /?およびendlocal /?で実行します。そして、npm install後にバッチファイルで動作しない ディレクトリコマンドを変更するcdの答えを読んでください これら2つのコマンドの詳細を説明してください。

setlocal & cd /D "F:\- Big Packets -\kitterengine\Common" & call Template.bat & endlocal

ここで重要なのは、setlocalが実行された後、コマンドendlocalが最後に実行されることが重要であるため、&の代わりに&&のみが使用されることです。


もう1つ注意事項

バッチファイルTemplate.batにパラメーター/Bなしのコマンドexitが含まれ、このコマンドが実際に実行される場合、コマンドプロセスは呼び出し階層に関係なく常に終了します。したがって、このバッチファイルでexitが使用されている場合は、_exitだけでなく、Template.batexit /Bまたはgoto :EOFが含まれていることを確認してください。

4
Mofi

Cmdコマンドを使用してバッチファイルを実行できます。

ここに私の方法=>

cmd /c ""Full_Path_Of_Batch_Here.cmd" "

詳細情報=> cmd /?

0
scientist_7