1

さて、これはプログラミング関連ではないと思います...

私が書いた一連のプロジェクトに散らばっている小さな便利なコンソール ユーティリティがたくさんあるので、それらをすべて 1 つのディレクトリにダンプして、使いやすくしたいと考えています。唯一の問題は、それらをすべてデバッグ モードとリリース モードの両方でコンパイルしたことです。

ユーティリティ ディレクトリにリリース モード バージョンのみが必要な場合、どのスイッチを使用すると、すべての実行可能ファイルをツリー構造から取得するが、Release フォルダー内からのみ取得するかを指定できます。

例:

Projects\   
  Project1\
    Bin\
      Debug\
        Project1.exe
      Release\
        Project1.exe   
  Project2\

などなど...

Utilities\
  Project1.exe
  Project2.exe
  Project3.exe
  Project4.exe
  ...

などなど...

これは XCopy で簡単にできると思いましたが、Debug ディレクトリを除外することはできないようです。つまり、Release ディレクトリにアイテムを含めることしかできないようです。

何か案は?

4

5 に答える 5

1

次のようにして、実行可能ファイルのみをリリースするように制限できます。ただし、フラット化の他の要件が xcopy のみを使用して可能であるとは思いません。制限を行うには:

まず、exclude.txtなどのファイルを作成し、これを内部に配置します。

\Debug\

次に、次のコマンドを使用します。

xcopy /e /EXCLUDE:exclude.txt *.exe C:\target

ただし、xxcopy (非商用の場合は無料) を使用して目的を達成することはできます。フラット化機能の説明については、技術情報 #16を参照してください。

その技術速報の主張が正しければ、フラット化は xcopy だけでは達成できないことが確認されます。

次のコマンドは、xxcopy を使用して必要なことを正確に実行します。

xxcopy /sgfo /X:*\Debug\* .\Projects\*.exe  .\Utilities

ただし、フラット化のためのより洗練されたオプションが提供されているため、技術速報を読むことをお勧めします。上記の最も基本的なものを選択しました。

于 2009-07-17T18:01:07.233 に答える
0

これはあなたが始めるのを助けるかもしれません:

C:\>for %i in (*) do  dir "%~dpi\*.exe"

dirコマンドでiの修飾子として使用される〜dpは、(*)で見つかったすべてのドライブとパスを使用します。実行可能ファイルを含む複数のサブフォルダーがあるフォルダーで上記を実行すると、各フォルダー内のすべての実行可能ファイルのディレクトリリストが表示されます。

これを変更して、〜dpi部分の後に'\ bin \ release \'を追加し、dirをxcopyに変更できるはずです。少し実験すれば、かなり簡単になります。

上記のforステートメントをバッチファイルで使用するには、両方の場所で「%」を「%%」に変更します。

于 2009-07-17T18:11:56.230 に答える
0

わかりました、Windows マシンを使用しているように見えるので、これはおそらくうまくいかないでしょう。
とにかく、ロジックのためにここに行きます。

# From the base directory
mkdir Utilities
find . -type f | grep -w Release > utils.txt
for f in $(<utils.txt); do cp $f Utilities/; done

findと行を 1 つにまとめることができますcp。読みやすくするために分割しています。

Windows マシンでこれを行うには、Cygwin などの Unix ユーティリティが必要です。
これを行うためのツールがWindowsシェルにあるかもしれません...

于 2009-07-17T17:58:24.027 に答える
0

申し訳ありませんが、まだ試していませんが、次のものを使用しないでください。

xcopy release*.exe d:\destination /s

私は現在Macを使用しているため、確実に確認することはできません。

于 2009-07-17T17:43:37.347 に答える
0

これは、すべてを 1 か所にまとめるのに役立たないかもしれませんが、今後、Visual Studio のプロジェクトにビルド後のイベントを追加することを検討していますか (ディレクトリ名に基づいて使用していると仮定しています)。

xcopy /Y /I /E "$(TargetDir)\$(TargetFileName)" "c:\somedirectory\$(TargetFileName)"

于 2009-07-17T17:47:39.133 に答える