Visual Studioビルドスクリプトに、重要なことを行う.batファイルを実行させようとしています。
これが私が今やりたいことです:
cd "F:\- Big Packets -\kitterengine\Common\" Template.bat
しかし、それは機能しません。
私はそれを機能させるためにこれをしなければなりません:
cd "F:\- Big Packets -\kitterengine\Common\"
F:
Template.bat
しかし、これをVisual Studioスクリプトに追加するのはかなり困難です。
これを1行で行うにはどうすればよいですか?
ここを参照できます: https://ss64.com/nt/start.html
start "" /D F:\- Big Packets -\kitterengine\Common\ /W Template.bat
"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は
アプリケーションのロード元のディレクトリ。
親プロセスの現在のディレクトリ。
Windows NT/2000/XP:32ビットWindowsシステムディレクトリ。 GetSystemDirectory関数を使用して、このディレクトリのパスを取得します。このディレクトリの名前はSystem32です。
Windows NT/2000/XP:16ビットWindowsシステムディレクトリ。このディレクトリのパスを取得する関数はありませんが、検索されます。このディレクトリの名前はSystemです。
Windowsディレクトリ。 GetWindowsDirectory関数を使用して、このディレクトリのパスを取得します。
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 行末まで削除します
このタスクを解決する多くの可能性があります。
最も簡単な解決策は、フルパスでバッチファイルを実行することです。
"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のパスを説明します。
別の解決策は、フルパスでバッチファイルを呼び出すことです。
call "F:\- Big Packets -\kitterengine\Common\Template.bat"
最初のソリューションとの違いは、バッチファイルTemplate.bat
の終わりに達した後、このコマンドラインを含むバッチスクリプトでバッチ処理が続行されることです。
現在のディレクトリについては上記をお読みください。
1つのコマンドラインで複数のコマンドを実行するための3つの演算子があります:&
、&&
、||
。
詳細については、 Windowsバッチファイルを使用した複数のコマンドを含む単一行の回答を参照してください
このタスクには&&
演算子をお勧めします。
cd /D "F:\- Big Packets -\kitterengine\Common" && Template.bat
最初のソリューションと同様に、これが* .batまたは* .cmdファイルであり、Template.bat
でのディレクトリの変更とバッチ処理の継続が成功した場合、現在のスクリプトには戻りません。
このコマンドラインはディレクトリを変更し、成功するとバッチファイルを呼び出します。
cd /D "F:\- Big Packets -\kitterengine\Common" && call Template.bat
3番目のソリューションとの違いは、Template.bat
の終了処理で現在のバッチスクリプトに戻ることです。
上記の4つのソリューションは現在のディレクトリを変更し、Template.bat
が何を行うかは不明です。
現在の* .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.bat
にexit /B
またはgoto :EOF
が含まれていることを確認してください。
Cmdコマンドを使用してバッチファイルを実行できます。
ここに私の方法=>
cmd /c ""Full_Path_Of_Batch_Here.cmd" "
詳細情報=> cmd /?