【问题标题】:Batch file for moving files to folders based on filenames用于根据文件名将文件移动到文件夹的批处理文件
【发布时间】:2015-10-23 14:52:42
【问题描述】:

我使用 Dropbox 自动将我从手机拍摄的所有照片/视频上传到文件夹“我的 Dropbox\Camera Uploads”。所以这里充满了类似的文件:

2015-06-09 10.11.19.jpg

2015-09-11 09.28.46.mp4

我现在想要一个批处理文件将这些文件移动到正确的文件夹(如有必要,创建它)“..\Photos\Family\YYYY-MM”,其中 YYYY-MM 是照片的年份和月份(即文件名的前七个字符)。

(它必须是相对路径而不是绝对路径,因为此 Dropbox 文件夹在 XP、Vista 和 Windows 7 操作系统的计算机之间共享,因此每个路径的第一部分都不同。)

我找到了类似的批处理文件并尝试对其进行调整,但无法使其正常工作。非常感谢您的帮助。

【问题讨论】:

  • 请分享您到目前为止所尝试的...

标签: batch-file


【解决方案1】:

您可以使用此脚本(将其放在扩展名为 .bat 的文件中)并启动它:

@echo off
setlocal enabledelayedexpansion
rem For each file in your folder
for %%a in (*.*) do (
    echo filename=%%a
    rem check if the it is not our script
    if "%%a" NEQ "%0" (
        set foldername=%%a
        set foldername=..\Photos\Family\!foldername:~0,7!
        echo foldername=!foldername!
        rem check if forlder exists, if not it is created
        if not exist "!foldername!" mkdir "!foldername!"
        rem Move (or change to copy) the file to directory
        move "%%a" "!foldername!\"
    )
)

【讨论】:

  • 好东西,谢谢。在 Win7 上它也复制了自己,所以我只是将其更改为检查 *.jpg 或 *.mp4,它现在可以正常工作了。我快到了,但不知道 enabledelayedexpansion。
  • 很高兴听到这个消息。 #Andrewv - 请将回复标记为您的问题的解决方案
猜你喜欢
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多