2016-10-13 5 views
2

私は基本的に、このバッチをWindowsバッチに実装しようとしています:cp */win/lib/*.dll ./bin。 Linuxは私にこれらの派手なワイルドカードを働かせるほど親切ですが、Windowsはそれを取らないでしょう。その仕事をする最良の方法は何ですか? A forループはちょっと残酷すぎるようですが、copy, xcopy, robocopyのどちらも、そのような派手な仕事を実装していないようです。バッチでLinuxワイルドカードを回避する

ありがとうございました!

EDIT:文脈では、私はmingw32-makeのMakefileを書いています。実行可能ファイルのフォルダにたくさんの依存関係をコピーしたいと思います。ノー他の知って

+0

「バッチ」と「バッシュ」を実際に比較することはできません。 PowerShellの代わりに、MS-Windowsをベースとしたやや妥当なシェルを見てみたいかもしれません。 – arkascha

+0

それを比較するのと比べて、私が与えたのと同じ効果を持つ一連のコマンドを見つけようとしています。私はバッチを使用しています。これは、mingw32が使用するものです(たとえば、mingw32-w64など)。そのため、PowerShellは実際にはオプションではありません。 – Matrefeytontias

+0

よ記録のために、この行はPowerShellで動作します。今、私はmingw32-makeがPowerShellを使うことができるようにしたいと思います。 – Matrefeytontias

答えて

0

FORループはやり過ぎのように感じるかもしれないが、我々はここでバッチの話をしているので、なぜ単にあなたがすべてで欲しいものを行う方法があることは幸せではない... :)これを行う可能性(外部ツールを使用することは別として)ディレクトリマスクのバックスラッシュは、正規表現ではFINDSTRで倍増する必要があります(行4で行われます)。ネゲート文字クラスのキャレット^は、2度解釈されるため、2回エスケープする必要があります。

編集:*\win\libのサブディレクトリに.dllを含めないように修正しました。

@ECHO OFF 
SET dirmask=\win\lib 
SET extension=.dll 
SET regex=%dirmask:\=\\%\\[^^^^\\]*\%extension%$ 
FOR /F "tokens=*" %%G IN ('DIR /S /B ^| FINDSTR /R "%regex%"') DO COPY %%G .\bin 
+1

ワウハハ、ありがとう。私は間違いなく単独でそれを思い付くことができなかったでしょう。今私は真剣にMinGWを捨ててCygwinに行くことを検討しています:Pは私のMakefileのように思えます。 – Matrefeytontias

関連する問題