私は少しバッチファイルの初心者なので、あなたの助けに本当に感謝します。 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を取得し、ファイルの移動先のディレクトリを作成する方法がわかりません。
これを一線を越えて理解するのを手伝ってくれませんか?
%%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