用于根据文件名和移动文件创建文件夹的批处理文件

时间:2015-10-08 06:06:19

标签: windows batch-file

我用相机在父文件夹中拍摄了一堆照片。文件名具有这种格式; ' yyyymmdd_ttmmss.jpg',例如' 20151008_0730.jpg'。 我想根据文件名的' yyyymmd' -part创建文件夹,但格式为' yyyy-mm-dd'。所以文件' 20151008_0730.jpg'被移动到名为' 2015-10-08'的文件夹中。这是我到目前为止所得到的:

<key>NSAppTransportSecurity</key>  
     <dict>  
          <key>NSAllowsArbitraryLoads</key><true/>  
     </dict>  

但我不知道如何在创建文件夹之前格式化%% a-variable。

(这是之前提出的类似问题,但不是以此格式创建文件夹)

1 个答案:

答案 0 :(得分:1)

@echo off
setlocal

copy nul "%tmp%\20151008_0730.jpg"
copy nul "%tmp%\20151009_0731.jpg"
copy nul "%tmp%\20151010_0732.jpg"

set "sourcedir=%tmp%"
pushd %tmp%
for /f "delims=" %%a in ('dir /b /a-d "*_*.jpg"') do (
  set "file=%%a"
  setlocal enabledelayedexpansion
  set "folder=!file:~0,4!-!file:~4,2!-!file:~6,2!"
  echo:
  rem check if folder already exist
  if not exist "!folder!\nul" echo md "!folder!"
  echo move "!file!" "!folder!"
  endlocal
)
popd
exit /b 0

输出:

md "2015-10-08"
move "20151008_0730.jpg" "2015-10-08"

md "2015-10-09"
move "20151009_0731.jpg" "2015-10-09"

md "2015-10-10"
move "20151010_0732.jpg" "2015-10-10"

你必须通过更改sourcedir和pushd来清理这个样本,删除每个命令前面的echo,同时复制nul&#34; ....&#34;。

我在这里使用了VarSubstringdelayedexpansion

相关问题