请问根据文件创建日期归类到文件夹的bat如何增加成yyyy/mm/dd吗?
@echooff&title根据文件创建日期归类By依梦琴瑶::设置待处理的主目录路径setSrcDir=D:\test::设置新存放路径setNewDir=D:\New...
@echo off & title 根据文件创建日期归类 By 依梦琴瑶
::设置待处理的主目录路径
set SrcDir=D:\test
::设置新存放路径
set NewDir=D:\New
echo 正在处理中,请耐心等待。。。
for /f "delims=" %%a in ('dir /a-d/s/b/tc "%SrcDir%\*"') do (
call :MoveFile "%%~a" "%%~ta"
)
echo 处理完毕。
pause
call :Donate
exit
:MoveFile
set "CT=%~2"
set "CT=%CT:~0,4%\%CT:~5,2%"
if not exist "%NewDir%\%CT%" md "%NewDir%\%CT%"
move "%~1" "%NewDir%\%CT%\"
goto :eof
:Donate
set "S0=fPdv"
set "S1=.:ailnhpst/"
set "S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%"
set "S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%"
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit 展开
::设置待处理的主目录路径
set SrcDir=D:\test
::设置新存放路径
set NewDir=D:\New
echo 正在处理中,请耐心等待。。。
for /f "delims=" %%a in ('dir /a-d/s/b/tc "%SrcDir%\*"') do (
call :MoveFile "%%~a" "%%~ta"
)
echo 处理完毕。
pause
call :Donate
exit
:MoveFile
set "CT=%~2"
set "CT=%CT:~0,4%\%CT:~5,2%"
if not exist "%NewDir%\%CT%" md "%NewDir%\%CT%"
move "%~1" "%NewDir%\%CT%\"
goto :eof
:Donate
set "S0=fPdv"
set "S1=.:ailnhpst/"
set "S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%"
set "S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%"
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit 展开
2个回答
展开全部
复制粘贴到记事本,另存为xx.bat,编码选ANSI
<# :
cls
@echo off
rem 根据文件的创建日期将文件移动到以该日期的年月日创建的多级目录里
mode con lines=3000
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default)))"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$folder1="D:\xxx\源文件夹";
$folder2="E:\xxx\新文件夹";
if(-not (test-path -liter $folder1)){write-host ('"'+$folder1+'" not found');exit;};
$files=@(dir -liter $folder1 -recurse|?{$_ -is [System.IO.FileInfo]});
for($i=0;$i -lt $files.length;$i++){
$d=$files[$i].CreationTime.toString('yyyy-MM-dd');
$fd=$folder2.trimend('\')+'\'+$d.replace('-','\');
if(-not (test-path -liter $fd)){[void](md $fd -force);};
$n=1;$newfile=$fd+'\'+$files[$i].Name;
while(test-path -liter $newfile){
$newfile=$fd+'\'+$files[$i].BaseName+'_'+$n.toString()+$files[$i].Extension;
$n++;
}
write-host ($files[$i].FullName+' --> '+$fd);
mv -liter $files[$i].FullName $newfile;
};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询