web-dev-qa-db-ja.com

アルファベット順にカタログ化されたサブディレクトリにファイルを移動する

同じディレクトリに、同じタイプ(「.docx」など)のさまざまな「ファイル」(フォルダではない)があります。

また、その同じディレクトリには、「catalog」という名前のサブディレクトリがあり、その中にアルファベットのフォルダ(つまり、#ABCDEFなど...)。

これらのファイルが「D:/documents/」にあるとすると、[WindowsCMDまたはWindowsPowershellの使用]でファイルのリストを並べ替えて、「catalog」フォルダーの適切な[case-sensitive] "Alphabetical"フォルダー、[case-insensitive]で並べ替えファイル名の最初の文字?

例:[D:/documents/janet_henderson.docx]は[D:/documents/catalog/J/janet_henderson.docx]に移動します

D:/documents/catalog/#/」フォルダに任意の番号で始まる名前のファイルを入れる必要があることに注意してください。


私が今まで持っているもの

organize_files.batファイルに次のものがあります。

move  documents\A*.docx  documents\catalog\A\
move  documents\B*.docx  documents\catalog\B\
move  documents\C*.docx  documents\catalog\C\
move  documents\D*.docx  documents\catalog\D\
move  documents\E*.docx  documents\catalog\E\
move  documents\F*.docx  documents\catalog\F\
move  documents\G*.docx  documents\catalog\G\
move  documents\H*.docx  documents\catalog\H\
move  documents\I*.docx  documents\catalog\I\
move  documents\J*.docx  documents\catalog\J\
move  documents\K*.docx  documents\catalog\K\
move  documents\L*.docx  documents\catalog\L\
move  documents\M*.docx  documents\catalog\M\
move  documents\N*.docx  documents\catalog\N\
move  documents\O*.docx  documents\catalog\O\
move  documents\P*.docx  documents\catalog\P\
move  documents\Q*.docx  documents\catalog\Q\
move  documents\R*.docx  documents\catalog\R\
move  documents\S*.docx  documents\catalog\S\
move  documents\T*.docx  documents\catalog\T\
move  documents\U*.docx  documents\catalog\U\
move  documents\V*.docx  documents\catalog\V\
move  documents\W*.docx  documents\catalog\W\
move  documents\X*.docx  documents\catalog\X\
move  documents\Y*.docx  documents\catalog\Y\
move  documents\Z*.docx  documents\catalog\Z\
  • おそらくループに入れるなど、この操作を完了するためのより良い方法はありますか?
  • ただし、番号で始まるファイルを処理するにはどうすればよいですか?
  • ファイル名を確認するときに、Windows CMDで大文字と小文字を区別しないように指示する必要がありますか?
6

ファイルをアルファベット順にカタログ化されたサブディレクトリに配置する

例:[_D:/documents/janet_henderson.docx_]は[_D:/documents/catalog/J/janet_henderson.docx_]に移動します

また、注:ファイル名が数字で始まるファイルが_"D:/documents/catalog/#/"_フォルダーに入るのは明らかだと思います。

これとあなたの例をどのように説明するかに基づいて、以下はいくつかの例のコマンドです。

仮定

  • 文字付きのすべてのカタログと_#_ディレクトリはすでに作成されています。
  • 以下の最初の2つの例の場合、同じ名前の同じファイルを、そのファイルがあるディレクトリにMOVEすることは決してありません。同じ名前がすでに存在します。
  • 以下の最後の2つの例の場合、既存のファイルを常にソースから宛先へのMOVEコマンドで上書きします同じ名前の同じファイルがすでに存在する場合。

コマンドプロンプトコピー(ファイルがすでに存在する場合はプロンプト)

_@ECHO ON

SET Letters=(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)
SET Numbers=(0,1,2,3,4,5,6,7,8,9)
SET SourceDir=D:\documents
SET DestLetterDir=D:\documents\catalog
SET DestNumDir=D:\documents\catalog\#

FOR %A IN %Letters% DO MOVE "%SourceDir%\%~A*.*" "%DestLetterDir%\%~A\"
FOR %B IN %Numbers% DO MOVE "%SourceDir%\%~B*.*" "%DestNumDir%\"
GOTO EOF
_

バッチスクリプト(ファイルがすでに存在する場合はプロンプトを表示)

_@ECHO ON

SET Letters=(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)
SET Numbers=(0,1,2,3,4,5,6,7,8,9)
SET SourceDir=D:\documents
SET DestLetterDir=D:\documents\catalog
SET DestNumDir=D:\documents\catalog\#

FOR %%A IN %Letters% DO MOVE "%SourceDir%\%%~A*.*" "%DestLetterDir%\%%~A\"
FOR %%B IN %Numbers% DO MOVE "%SourceDir%\%%~B*.*" "%DestNumDir%\"
GOTO EOF
_

コマンドプロンプトコピー(強制上書き)

_@ECHO ON

SET Letters=(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)
SET Numbers=(0,1,2,3,4,5,6,7,8,9)
SET SourceDir=D:\documents
SET DestLetterDir=D:\documents\catalog
SET DestNumDir=D:\documents\catalog\#

FOR %A IN %Letters% DO ECHO Y | MOVE "%SourceDir%\%~A*.*" "%DestLetterDir%\%~A\"
FOR %B IN %Numbers% DO ECHO Y | MOVE "%SourceDir%\%~B*.*" "%DestNumDir%\"
GOTO EOF
_

バッチスクリプト(強制上書き)

_@ECHO ON

SET Letters=(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)
SET Numbers=(0,1,2,3,4,5,6,7,8,9)
SET SourceDir=D:\documents
SET DestLetterDir=D:\documents\catalog
SET DestNumDir=D:\documents\catalog\#

FOR %%A IN %Letters% DO ECHO Y | MOVE "%SourceDir%\%%~A*.*" "%DestLetterDir%\%%~A\"
FOR %%B IN %Numbers% DO ECHO Y | MOVE "%SourceDir%\%%~B*.*" "%DestNumDir%\"
GOTO EOF
_

さらに読むとリソース

4
Pimp Juice IT