Batch file 基于文件名将文件移动到文件夹的批处理文件

Batch file 基于文件名将文件移动到文件夹的批处理文件,batch-file,Batch File,我使用Dropbox自动将我从手机拍摄的所有照片/视频上传到“我的Dropbox\Camera Uploads”文件夹中。这里面有很多文件,比如: 2015-06-09 10.11.19.jpg 2015-09-11 09.28.46.mp4 我现在想要一个批处理文件,将这些文件移动到正确的文件夹(如有必要,创建它)“..\Photos\Family\YYYY-MM”,其中yyy-MM是照片的年份和月份(即文件名的前七个字符) (它必须是一个相对路径,而不是绝对路径,因为此Dropbox文件夹在

我使用Dropbox自动将我从手机拍摄的所有照片/视频上传到“我的Dropbox\Camera Uploads”文件夹中。这里面有很多文件,比如:

2015-06-09 10.11.19.jpg

2015-09-11 09.28.46.mp4

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

(它必须是一个相对路径,而不是绝对路径,因为此Dropbox文件夹在XP、Vista和Windows 7 OSs的机器上共享,因此路径的第一部分在每台机器上都不同。)

我发现了类似的批处理文件,并试图对其进行调整,但就是无法使其工作。非常感谢您的帮助。

您可以使用此脚本(将其放入扩展名为.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!\"
    )
)
您可以使用此脚本(将其放入扩展名为.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,现在工作正常。我就快到了,但不知道启用延迟扩展。很高兴听到这个消息#Andrewv-请将此回复标记为您问题的解决方案非常好,谢谢。在Win7上,它也复制了自己,所以我只是将其更改为检查*.jpg或*.mp4,现在工作正常。我就快到了,但不知道启用延迟扩展。很高兴听到这个消息#Andrewv-请将此响应标记为问题的解决方案