2009-05-26 1 views
2

この文字列を含むファイルをonelinerの場所にコピーする - cmd.exeでより良い方法がありますか?

for /f "tokens=*" %i in ('dir *sonic.exe /s /b') do copy /y "%i" D:\temp\utils\ 

質問にそれを行うには良いか短い方法はありますか?

p.s.私の古いチートシートから、私は(コピーしない)発見の短い方法を発見:私は

更新..ファイルのパスにスペースがない場合は、「トークン= *」を省略することができることを知っている

::START - RUN - cmd.exe 
dir d:\libs\*SubSonic*.dll /s /b>>list.txt&list.txt 
:: START - RUN - CMD.EXE 
where /R D:\libs\ *SubSonic* 
+0

PSは完全に受け入れられませんか? :P(IMOこれはPowerShellに同じ時間を費やすことに比べてCMD.EXEのこのような種類のものを計算することです) –

+0

質問にするより: onelinerの場所に文字列を含むファイルをコピーする - PowerShellの方が良い方法はありますか? –

+0

しかし、あなたが*本当に良い*ハンマーを持っているとき:D –

答えて

1

XCOPYでこれを行うことができます。

これは動作しますが、私は考えていないディレクトリ構造あまりにもあなたが望むものであるコピーします。

dir -r -i *sonic.exe | select-string "tokens=" | % {cp $_ d:\temp\utils} 

よう

XCOPY /S *sonic.exe D:\temp\utils 
+0

実際にそれは文字列を含むファイルだけをコピーしました... XCOPY/S * sonic.exe D:\ temp \ utils \ tmp D:ORM \ SubSystem_2.1_Final_Source \ src \ SubCommander \ bin \ Debug \ sonic.exe D:ORM \ SubSonic_2.1_Final_Source \ src \ SubCommander \ obj \ Debug \ sonic.exe 2ファイルがコピーされました –

+0

一致するファイルのみがコピーされますソースファイルがbinというサブディレクトリーにある場合、宛先ファイルもbinというサブディレクトリーに入れられます。 FORループはこれをしませんが、目的地にサブディレクトリが必要な場合は、XCOPYは間違いなくあなたが望むものです。 –

+0

うん、フォルダ構造が不要で正確に質問に答えなかった...私はそれを正しくテストせずに答えをマークするのが速かった...とにかく答えとコメントのために感謝!!! –

1

は何か? [PSで]

+0

+1。ありがとう。ここで議論された問題についての作業コードのない単純な理論は、あまり有用ではありません。 –

+0

私は普通、コードをポストして理論を送っていません(そして+1を取得しません:D)! (私はこれをテストしませんでしたが、私は同様のことを定期的に行っています)。あなたがPSに興味があるならば、あなたのウィッシュリストに追加する方法のPayette bookの新しい版があります - それはおそらくdevsのために最善です(そこには他にもたくさんの良い本があります) –

関連する問題