コマンドプロンプトでファイルと同じ名前のフォルダを作成する方法(サブフォルダの再帰)

コマンドプロンプトでファイルと同じ名前のフォルダを作成する方法(サブフォルダの再帰)

わかりました。これを実行する必要があるファイルは 15,000 個以上あります。
ルート ディレクトリでこれを試してみましたが、C:\asf> コマンドは次のとおりです。for /r %x in (*.asf) do aifdump -hr "%x" "%CD%"

しかし、ファイルはルートディレクトリに移動され、上書きされています。aifdump
の構文はaifdump.exe [オプション] [ASF_path] [Texture_dump_path]です。この問題を修正する方法はどれでもかまいません。Pythonなどを使用してもかまいません。ご協力ありがとうございます。

動作させる必要がある場合のサンプルを以下に示します。http://www.mediafire.com/?e9jwa3tkedilcy5

マイケルとボブ、助けてくれてありがとう。コマンドを実行するとこうなります

C:\asf>for /r %x in (*.asf) do aifdump -hr "%x" "%~dpnx"

C:\asf>aifdump -hr "C:\asf\9\0.asf" "C:\asf\9\0"

Texture 0.dds : 2.00 KB

そしてaifdumpはクラッシュします。出力フォルダを事前に作成しておくと

コマンドを実行すると動作しますので、コマンドをどのように修正すれば

aifdump コマンドを実行する前に必要なディレクトリ。

私はただ変更する必要があることに気付きましaifdump -hrmkdir

改めてご協力ありがとうございました

答え1

%CD%は常に、コマンドを実行したときに現在いたディレクトリを返します。この場合はC:\asf' です。あなたが尋ねていることを解釈すると、それぞれを別のディレクトリに移動したいということですか? そうであれば、コマンドでそのディレクトリ名を構築するだけです。

ただし、できない同じ名前で同じ親パスを持つファイルとフォルダがあります。たとえば、 という名前のファイルがあった場合C:\asdf\asdf.asfできないC:\asdf\asdf.asfパスがあいまいになるため、名前の付いたフォルダーも作成します。

最も簡単なオプションはファイル拡張子を削除することです。これは次のforコマンドで実行できます。

for /r %x in (*.asf) do aifdump -hr "%x" "%~dpnx"

注:%~dpnxは 3 つの修飾子の連結であり、変数 x に含まれるファイル名のドライブ、パス、および名前 (拡張子なし) を指定します。

答え2

つまり、出力パスをソース ファイルと同じ場所にしたいということですね?

for /r %x in (*.asf) do aifdump -hr "%x" "%~dpx"

%~特殊な修飾子です。 を参照してくださいfor /?%xの場合C:\asf\blah\bleh\file.asf:はdpドライブ ( C:) とパス ( \asf\blah\bleh\) を示し、 になりますC:\asf\blah\bleh\

関連情報