スクリプトとバッチ処理がひとつに
2022-01-07 03:59:58
バッチ処理は、私たちのコンピュータを管理し、いくつかの日常業務を行うための良いヘルパーであり、Windowsのアップグレードに伴い、バッチ処理はより多くのことを行うことができます。しかし、バッチ処理でできないこともまだたくさんあります。良いことは、Microsoftが後でWindowsでWindows Script Hostを追加し、我々は今、WMIと、より複雑な作業を完了するためにJScriptまたはVBScriptを使用することができますが、全能と言うことができる。CScript.exeまたはWScript.exeでwshスクリプトを実行するには、CScript.exeとWScript.exeがいくつかのパラメータは、実行結果に別のパラメータが影響を与えることがあります設定してくださいしてください。デフォルトのインタプリタ(WScript.exe)とデフォルトのパラメータを使用したスクリプトの中には、私が望む結果を得られないものがあることに気づきました。そのため、他の人が使うスクリプトを書くときには、やはりCScript.exeとWScript.exeのどちらを使って実行するのか、どのパラメータに合わせるのかを細かく説明しなければならない。この問題を解決するにはどうしたらいいか?スクリプトを正しく実行させるために、別のバッチファイルを書くという方法がある。しかし、その場合、2つのファイルを用意する必要がある。1つのファイルだけでいいのですか?はい、できます。スクリプトとバッチを1つにまとめましょう。これは、上記の問題を解決するだけでなく、バッチとWSHの両方の利点を生かすことができます。
jScriptは/* */でコメントとしてテキストを入れることができるので、jScriptを選択しました。しかし、/* */はバッチ処理では不正な文字なので、どのようにすれば不要なエラーメッセージなしに導入できますか?
バッチとJScriptの両方で受け入れられて、/*を持ち込むようなことはあまりしない文が必要です。JScriptでは@set @varname=value、バッチでは: set varname=valueという文があり、その前に@を付けて、その文が出力されないことを示すことができます。これだけでいいんです! に関しては、@rem */を使うのが良いでしょう。
以下のコードをご覧ください(拡張子はbat)、とてもシンプルです。
@set @this_call_started=1 /*
@echo off
@rem Allow CMD.EXE extensions
@SETLOCAL ENABLEEXTENSIONS
@rem Allow CMD.EXE to delay the expansion of environment variables
@SETLOCAL ENABLEDELAYEDEXPANSION
...
Batch statements are written here
...
@rem "%~dpnx0" extends the file name of the batch file itself to the file name with the full path
@rem %* All parameters of the batch file itself
@rem re-call this file as a script file
@call CScript.EXE "%~dpnx0" //Nologo //e:jscript %*
...
Batch statements are written here
...
@goto end_this_call
@rem */
//Windows Script Start==================================================
...
Script statements are written here
...
//Windows Script end=====================================================
/*
:end_this_call
...
Batch statements are written here
...
@set @this_call_started=
@rem */
jScriptは/* */でコメントとしてテキストを入れることができるので、jScriptを選択しました。しかし、/* */はバッチ処理では不正な文字なので、どのようにすれば不要なエラーメッセージなしに導入できますか?
バッチとJScriptの両方で受け入れられて、/*を持ち込むようなことはあまりしない文が必要です。JScriptでは@set @varname=value、バッチでは: set varname=valueという文があり、その前に@を付けて、その文が出力されないことを示すことができます。これだけでいいんです! に関しては、@rem */を使うのが良いでしょう。
以下のコードをご覧ください(拡張子はbat)、とてもシンプルです。
コピーコード
コードは以下の通りです。
@set @this_call_started=1 /*
@echo off
@rem Allow CMD.EXE extensions
@SETLOCAL ENABLEEXTENSIONS
@rem Allow CMD.EXE to delay the expansion of environment variables
@SETLOCAL ENABLEDELAYEDEXPANSION
...
Batch statements are written here
...
@rem "%~dpnx0" extends the file name of the batch file itself to the file name with the full path
@rem %* All parameters of the batch file itself
@rem re-call this file as a script file
@call CScript.EXE "%~dpnx0" //Nologo //e:jscript %*
...
Batch statements are written here
...
@goto end_this_call
@rem */
//Windows Script Start==================================================
...
Script statements are written here
...
//Windows Script end=====================================================
/*
:end_this_call
...
Batch statements are written here
...
@set @this_call_started=
@rem */
関連
-
[解決済み] 式は変更可能なlvalueでなければならない
-
[解決済み】データフレームで関数を適用する場合、dim(X)は正の長さでなければならない
-
[解決済み】dyld: ライブラリがロードされない ... 理由: 画像が見つからない
-
[解決済み】エラー。式はintegralまたはunscoped enum型でなければなりません。
-
[解決済み】報告されない例外 java.lang.Exception; キャッチするか、投げるように宣言しなければならない 【重複
-
[解決済み】ValueError: コンボリューション使用中のオブジェクトが目的の配列に対して深すぎる
-
[解決済み] gcloudコマンドが見つからない - Google Cloud SDKのインストール時
-
[解決済み】Github "ローカルにない作業がリモートに含まれているため、更新が拒否されました。"
-
[解決済み】char*とconst char*の違い?
-
cygwinの経験
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] '\r': コマンドが見つかりません - .bashrc / .bash_profile [重複].
-
[解決済み】mysqli_fetch_array() は、パラメータ 1 が mysqli_result であることを期待し、boolean は【重複】で与えられました。
-
[解決済み】C#コンパイラーエラー。"すべてのコードパスが値を返すわけではない"
-
[解決済み】C#でクエスチョンマークを2つ並べるとどんな意味になるのか?
-
[解決済み】ValueError: 値の長さがインデックスの長さと一致しない|Pandas DataFrame.unique()
-
[解決済み】ENOENTが「そのようなファイルやディレクトリはありません」という意味であるのはなぜですか?
-
[解決済み] テスト
-
[解決済み] テスト
-
[解決済み】エラー:lvalueは単項演算子として必要です。
-
LAN設定用自動設定スクリプトファイルの書き方・使い方