2012-02-20 5 views
2

c:\my_folderにすべてのサブフォルダをループし、指定されたファイルが存在するかどうかを確認して、c:\copy(たとえばc:\copy\project1)のフォルダを作成します。CMD/batchサブフォルダのベース名を取得

バッチファイル(for /d %variable in ("path") DO command)、 のフォルダをループするのは簡単ですが、変数にはフルパスが含まれています。新しいフォルダを作成するには、サブフォルダのbasenameだけが必要です。 どうすれば入手できますか?私は他の文字を削除するときに別のループを書く必要がありますか? 簡単な方法はありますか?

答えて

0

ジョーイが言ったこと。一方、あなたは完全に異なるアプローチを試みることができる:

XCOPY "C:\my_folder\my_file" "C:\copy" /S /I 

これは、構造を維持してC:\my_folderC:\copyへのすべてのサブフォルダから、指定されたファイルをコピーします。 my_fileを持たないサブフォルダは、C:\copyには作成されません。 /Sスイッチは、サブフォルダ内でmy_fileを検索するようにXCOPYに指示します。 /Iパラメータは、先に進む前にC:\copyをフォルダにする必要があります。

+0

だから私は次のようにタイプするべきです:/ d %% dの(C:\ my_folder)do(xcopy %% d \ myfile c:\ copy/S/I)?私は現在Linuxマシンの下で働いているので、私は今それを確認することはできません。 – matandked

+0

@matandked:いいえ、ちょうど 'xcopy'、ループなし。少なくとも、それは私が試したものでした。私の答えで説明したように、それは私のために働いていました。 –

3

私が正しく理解していれば、フォルダ名だけが必要です。その場合、これは簡単です:

for /d %%d in (C:\my_folder) do echo %%~nxd 
関連する問題