質問: ファイル名の最初のwordに基づいてファイルをサブフォルダーに移動するwindowsバッチファイル? 私は少しバッチファイルの初心者なので、あなたの助けに本当に感謝します。 1つのディレクトリに大量のファイルが保存されており、ファイル名の最初の単語に基づいてサブフォルダに分類したいと考えています。だから、私はこれらのようなファイルを持っています:c:\folder\wedding2018 img20929.jpg c:\folder\wedding2018 entrance.mov c:\folder\wedding2018 registry of guests.pdf c:\folder\horseriding2017 spirit1.jpg c:\folder\horseriding2017 guests.txt c:\folder\horseriding2017 certificate.pdf c:\folder\horseriding2017 jumping.mov そして、すべてのファイルを最初のwordに基づいてサブフォルダーに移動し、次のようにします。c:\folder\wedding2018\img20929.jpg c:\folder\wedding2018\entrance.mov c:\folder\wedding2018\registry of guests.pdf c:\folder\horseriding2017\spirit1.jpg c:\folder\horseriding2017\guests.txt c:\folder\horseriding2017\certificate.pdf c:\folder\horseriding2017\jumping.mov ほぼ必要なことを実行するスクリプトをいくつか見つけましたが、それを家に持ち帰るためのチョップがありません。 "ファイル名に基づいてフォルダを作成し、ファイルを自動移動するためのスクリプトが必要です" "windowsバッチを介して文字列の2番目の単語を抽出する方法" スクリプトを統合して最初のwordを取得し、ファイルの移動先のディレクトリを作成する方法がわかりません。これを一線を越えて理解するのを手伝ってくれませんか?
回答: forを使用して、少なくとも1つのスペースを含むパターンでフォルダーコンテンツ%%aを反復します。 名前for /fを2つの部分に分割するには別の%%aが必要です。1つは最初のスペースtokens=1 = %%bの前で、残りはtokens * = %%cです。 。 %%bという名前のフォルダが存在しない場合は作成してください 元のファイル%%aを%%bという名前のサブフォルダー%%cに移動します :: q:\2018\06\11\su_1330475.cmd @echo off pushd c:\folder for %%a in ("* *.*") do for /f "tokens=1*" %%b in ("%%a") do ( if not exist "%%b" md "%%b" move "%%a" "%%b\%%c" ) popd > tree /f c:. │ su_1330475.cmd │ └───folder ├───horseriding2017 │ certificate.pdf │ guests.txt │ jumping.mov │ spirit1.jpg │ └───wedding2018 entrance.mov img20929.jpg registry of guests.pdf