2017-09-10 1 views
0

のコピー(Windowsの10教育N x64版)は...だから私はこの小さな問題を抱えている特定の拡張子を持つ複数のファイルに</p> <p>を

私はGoldSrcエンジンの開発者だと私は 次のことを達成しようとしていますバッチスクリプトやPowerShellは、自動で タスクを実行するのではなく、手動ですべての気がするフォルダを手動で選択する代わりに、 最終的に空き時間になります。 :)

私は、次のようなディレクトリ構造を持つ午前:

絶対パス:

メイン(ルート)フォルダ名 "GoldSrc" を "デスクトップ"

に位置していますので、それはこのように書きます:ツリービューから

画像:

Image from TREE VIEW

[Main folder] 
C:\Users\Andrej Poženel\Desktop\GoldSrc 

[Source directory to copy from with recursive subdirectories] 
C:\Users\Andrej Poženel\Desktop\GoldSrc\prefabs 

[Directory to copy to] 
C:\Users\Andrej Poženel\Desktop\GoldSrc\Maps 

は、私が「プレハブ」という名前のサブフォルダに検索し、 と.rmf .MAPファイル拡張子を持つファイルに対して、そのディレクトリ内のすべての のサブフォルダを検索したいので、両方のフィルタ一緒にそのソース 場所の[からそれらをコピーします。 ./GoldSrc/prefabs/like_100_folders_here]「マップ」という名前の「GoldSrc」 サブディレクトリ、画面上に示すすべてのもの)

にだから私は物事がこのプロセスの後に次のようになりたい:

C:\Users\myusername\Desktop\GoldSrc\Maps:blabla.map bleble .rmf bleble.rmf cacac.rmf adasdad .MAP ...

はなく、独自のディレクトリ内の各ファイルがソースディレクトリにあるように...事前に

おかげ

+0

、そのうちの1つだけ。おそらく、 ".mapまたは.rmf拡張子"を持つファイルが必要です... – Aacini

+1

StackOverflowはコードリクエストサイトではなく、自分のコードに関連する問題について助けを求める場所です。問題のコードを[編集する](https://stackoverflow.com/posts/46141258/edit)して、選択したタグも適切であることを確認してください。 – Compo

+0

申し訳ありませんが、私は私のコードをポストするのを忘れ... –

答えて

0
pushd "C:\Users\myusername\Desktop\GoldSrc" 
for /f "delims=" %%a in ('dir /s /b /a-d .\prefabs\*.map .\prefabs\*.rmf') do ECHO copy "%%a" ".\maps\" 
popd 

はこれを実行する必要があります。

最初に必要なサブディレクトリに移動し、基本形式のサブディレクトリとディレクトリ名を除いたサブディレクトリを含むディレクトリスキャンを実行します。いずれかのファイル指定に一致する返された行ごとに、見つけた名前を%%aに割り当て、そのファイルを必要なサブディレクトリにコピーします。

元のディレクトリに戻ります。

生成されるコマンドは、単にコンソールにechoになります。コマンドを実際に実行するには(確認の後)、ECHOキーワードを削除します。

これはバッチファイルであり、プロンプトから直接実行されることはありません。

+0

それは働いていた、私は完全に私はバッチでこれまでに得たものを忘れてしまった...ここで –

+0

は私のバッチknowlegdeからもらったコードです... :(、答え –

+0

ためのおかげで カラー0A レム備考 をオフ@echo CD は、キーボードの任意のキーを押すことにより、MAPおよびRMFファイルのコピーを開始エコー! 一時停止 XCOPY ../prefabs*.rmf ../prefabs/maps XCOPY ../prefabs*.map ../prefabs/maps ポーズ –

0

あなたはそれをPowerShellの道をしたい場合は、以下のコードを使用することができます

gci "C:\Users\Andrej Poženel\Desktop\GoldSrc\prefabs" -filter *.map | %{ 
copy-item -Path $_.FullName -Destination "C:\Users\Andrej Poženel\Desktop\GoldSrc\Maps"} 

gci "C:\Users\Andrej Poženel\Desktop\GoldSrc\prefabs" -filter *.rmf | %{ 
copy-item -Path $_.FullName -Destination "C:\Users\Andrej Poženel\Desktop\GoldSrc\Maps"} 

またはファイルが「.MAPと.rmf拡張子を」持っている方法はありません

gci "C:\Users\Andrej Poženel\Desktop\GoldSrc\prefabs" -recurse | ?{ 
!$_.PsIsContainer -and $_.Extension -match "map|rmf" } | %{ 
copy-item -Path $_.FullName -Destination "C:\Users\Andrej Poženel\Desktop\GoldSrc\Maps"} 
+0

PSコードをありがとう、私は、Windowsにバンドルされているコマンドラインプロセッサーのアプリケーションで、PSまたはバッチ –

+1

2つの別々の 'gci'コマンドとして実行するのではなく、' where-object'テストを行うことができます。 'gci" pathname "-recurse | ?{!$ _。PsIsContainer -and $ _。Extension - マッチ "マップ| rmf"} | %{copy stuff} '(疑問符は' where-object'の略語で、パーセント記号は 'foreach-object'の省略形と同様です。) – rojo

+0

これは別の方法です...私は考えることができませんでした1つのステートメントで2つをペアにする方法 – ShanayL

関連する問題