ファイル・フォルダ管理 - バッチファイル

ファイルを先頭N文字のフォルダ毎に分類

これを                 こうしたい。
\dir               →  \dir
  |- 20170801.csv        |- \201708
  |- 20170802.csv        |    |- 20170801.csv
  |- 20170803.csv        |    |- 20170802.csv
  |- 20171010.csv        |    `- 20170803.csv
  |- 20171025.csv        |- \201710
  `- 20171225.csv        |    |- 20171010.csv
                         |    `- 20171025.csv
                         `- \201712
                              `- 20171225.csv
distribute_left6dir.bat
@@echo off
rem 実行フォルダ内にあるCSVを、ファイル名の先頭6文字のフォルダごとに分類
 
for %%A in (*.csv) do call :Main %%A %%~nxA
goto End

:Main
set bname=%2
set dirname=%bname:~0,6%
if not exist %dirname% mkdir %dirname%
move %1 %dirname%
goto :eof

:End
pause

バッチファイルではfor文内でのsetが上手くいかないので、関数のように外部化している。

フォルダ構造のみコピー

空のフォルダは除く

xcopy /t コピー元パス コピー先パス

空のフォルダもコピー

xcopy /t /e コピー元パス コピー先パス
programming/batch/distribute_files.txt · 最終更新: 2018/05/22 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0