SQL Server DBAとしての仕事では、かなりのスクリプトを実行する必要があります。時々、非常に制限された環境に修正スクリプトを展開する必要があります。この環境では、スクリプトの唯一のオプションはDOSバッチである可能性があります。そのような環境の1つでは、PowerShellは言うまでもなく、VBScript/WSHでさえ可能ではありません。DOSとWindowsで十分なバッチファイルを作成したことのある人なら誰でも、それが非常に制限されており、複雑すぎることを行う必要がある場合は巨大なPIAであることを知っています。これは、Unixシェルスクリプト、Perl、Tcl、Python、Rubyなどを使用したことがある人に特に当てはまります。
これに対する可能な解決策は、より有能なスクリプト言語からの便利な機能のいくつかを追加するCMDプリプロセッサです。私はそのようなユーティリティを見つけようとしましたが、今のところ運がありません。
これが最終的に私の質問につながります:そのようなCMDプリプロセッサを知っている人はいますか?そうでない場合は、どの機能を1つにまとめたいですか?
補遺:
プリプロセッサのアイデアに慣れていない場合は、このウィキペディアのエントリを参照してください。
明確にするために、私は次のような機能を追加するツールを考えています。
...そしておそらく他の人。これらは私がCMDに望んでいた2つの機能であり、CMDプリプロセッサを使用してそれらを実装する方法を考えることができます。関数は、envvarsとGOTO/labelsを使用して実装できます。一時ファイルにパイプし、set / p =<を使用して結果をenvvarに読み込むことにより、バックティックを実行します。
あなたはすでにこれらの同じ目的を達成することができますが、それは非常に退屈で冗長になります-それが私がプリプロセッサにそれらのような機能の定型文を処理させるという考えに至った方法です。
例
バックティックの例を使用して、CMD.exeで実行する準備ができている、架空のBatch++および処理済みのバニラバッチスクリプトからの未処理のコードの例を次に示します。
Batch ++ソース(test.batpp)
copy `dir /b /s c:\ | find "CADR-README.htm"` \\srv01\users
プリプロセッサを介して実行します
bpp test.batpp > post_test.bat
結果のCMD/BATコード(post_test.bat)
dir /b /s c:\ | find "CADR-README.htm" > _bt001.tmp
set /p _BT001 =< _bt001.tmp
copy %_BT001% \\srv01\users
set _BT001=
del _bt001.tmp