1

名前入力を取得し、ディレクトリを検索して存在するかどうかを確認するためのバットスクリプトを作成する最良の(またはより良い)方法がわからない.

比較を実行する前に、まずディレクトリ リストをファイルに出力する必要がありますか?

それが違いを生む場合、ディレクトリはリポジトリ上にあるので、私の目的のために「svn list」を使用しますが、誰にとっても良い一般的な解決策がいいと思いました.

4

1 に答える 1

3

ディレクトリ内の特定の名前をテストする場合は、通常、次のようなことを行います。

if exist name (echo found it) else (echo not found)

または名前が不完全な場合

if exist *name* (echo found it) else (echo not found)

ディレクトリツリー内のどこかで名前をテストしている場合は、

dir /s /a-d *name* >nul && (echo found it) || (echo not found)

出力行を生成するコマンドを発行していて、名前が1行以内に存在するかどうかをテストする場合、出力のサイズが大きくなく、後半が追いつくことができる限り、Windowsパイプは通常正常に機能します。前半で。

yourCommand | find "name" >nul && (echo found it) || (echo not found)

ただし、後半が前半に比べて遅い場合はパイプが非効率になり、大量のデータをバッファリングする必要があります。その場合、パイプの代わりに一時ファイルを使用することをお勧めします。同じ一時ディレクトリを使用する複数のプロセスの衝突を防ぐために、一時ファイル名に乱数を組み込みます。

set tempFile="%temp%\myTempFileBaseName%random%.txt"
yourCommand >%tempFile%
<%tempFile% find "name" >nul && (echo found it) || (echo not found)
del %tempFile%

パフォーマンスの問題があることがわかっていない限り、私は通常パイプを使用します。

于 2012-04-17T11:45:42.893 に答える