用批处理批量分类照片 —— for 语句的一个应用

2015年 7月 28日

tags: bat


先上批处理,再解释

@echo off
echo ==================================================
echo.
echo               照片分类辅助工具
echo.
echo --------------------------------------------------
echo. 
echo 准备将当前文件夹下的文件分发到各个文件夹中...
echo. 

pause


echo. 
echo. 
set pic_count = 0
set dir_count = 0

for /f "tokens=1,2,3 delims=-" %%a in ('dir /a-d /b *.*') do (
  if not %%a == %0 ( 
    if not exist %%a (
      echo 建立文件夹: "%%a"
      md %%a
      set /a dir_count += 1
      echo.
    )
    echo 移动文件 %%a-%%b-%%c 到 %%a%
    move %%a-%%b-%%c %%a%
    set /a pic_count += 1
    echo.
  )
)

echo 已建立%dir_count%个文件夹,并将%pic_count%个文件分发到各个文件夹中... 

bat文件的作用是,将当前文件夹中的所有文件放到指定的文件夹中。

文件名需要用短横线“-”分为3部分,第一部分为指定的文件夹的名称。例如:“123-4-567.jpg”、“123-5-567.jpg”文件将会被放到“123”文件夹中,而“1234-5-67.jpg”将会被放到“1234”文件夹中。

值得注意的是for语句

  • /f 包含变量延迟
  • delims=- 将变量用'-'分开
  • tokens=1,2,3 将变量分开后的各个部分赋值给3个变量 %%a %%b %%c
  • 'dir /a-d /b *.*' dir命令
    • /a 要显示的文件属性,-d 为不包含文件夹
    • /b 简略模式,不显文件示详情

评论!

社交