标题: [文件操作] robocopy代码比较简洁,移动当天文件到当天日期文件夹的的 [打印本页]
作者: onging 时间: 2024-9-13 09:57 标题: robocopy代码比较简洁,移动当天文件到当天日期文件夹的的
- robocopy D:\新建文件夹 D:\新建文件夹\%date:~0,4%-%date:~5,2%-%date:~8,2% /mov
复制代码
这段代码比较简洁,移动当天文件到当天日期文件夹的的,缺点是不能移动文件夹,加点什么可以移动文件又可以移动文件夹呢?
作者: aloha20200628 时间: 2024-9-13 10:05
本帖最后由 aloha20200628 于 2024-9-13 10:29 编辑
回复 1# onging
/mov 改为 /move 即可
另建议 ‘目的地文件夹’ 不要在 ‘源文件夹’ 里面...
作者: 77七 时间: 2024-9-13 14:24
1楼的代码并没有限制移动文件的创建或修改时间。
移动创建日期为今天的文件,前贴已经给出
移动修改日期为今天的文件
- @echo off
- for /f %%a in ('wmic os get localdatetime ^| findstr [0-9]') do (
- set d=%%a
- )
- robocopy "d:\test" "d:\%d:~0,4%-%d:~4,2%-%d:~6,2%" /s /move /maxage:%d:~0,4%%d:~4,2%%d:~6,2%
- pause
复制代码
作者: aloha20200628 时间: 2024-9-13 15:00
本帖最后由 aloha20200628 于 2024-9-13 16:31 编辑
回复 1# onging
看 robocopy 用法细则中有两种移动当日数据的选项,例如》
选项一- robocopy d:\源文件夹 d:\目的地文件夹 /move /maxage:1
复制代码
选项二- robocopy d:\源文件夹 d:\目的地文件夹 /move /maxage:20240913
复制代码
第二选项的当日值可用以下代码获取(无论系统日期值采用 / 或 - 分隔符均予剔除)若确认分隔符是 / 则可删除以下第二行- for /f "tokens=1 delims= " %%a in ("%date:/=%") do set "td=%%a"
- set "td=%td:-=%
- robocopy d:\源文件夹 d:\目的地文件夹 /move /maxage:%td%
复制代码
若已知系统日期净值为10位(以防有时会被设为后缀星期值),也可以直接从 %date% 截取- set "td=%date:~0,4%%date:~5,2%%date:~8,2%"
- robocopy d:\源文件夹 d:\目的地文件夹 /move /maxage:%td%
复制代码
作者: onging 时间: 2024-9-13 17:11
回复 2# aloha20200628
move试过,文件夹依然是不移动的
作者: onging 时间: 2024-9-13 17:35
回复 3# 77七
大佬 们有测试过吗,不起作用的
@echo off
for /f %%a in ('wmic os get localdatetime ^| findstr [0-9]') do (
set d=%%a
)
robocopy "D:\新建文件夹" "D:\新建文件夹" /s /move /maxage:%d:~0,4%%d:~4,2%%d:~6,2%
pause
作者: onging 时间: 2024-9-13 17:39
回复 4# aloha20200628
大佬们,一条都不起作用呢
作者: zhengzhenhui 时间: 2024-9-13 17:41
文件夹不是当天日期的,但是里面的文件是当天,也不会移动,应用场景感觉移动文件就够用的
作者: zhengzhenhui 时间: 2024-9-13 17:49
- @echo off
- cd /d "%~dp0"
- @REM 把当前目录下 创建日期是今天的文件和文件夹移动到 今天'yyyy-MM-dd'文件夹
- set "batchfile=%~f0"
- powershell -c "$today=[datetime]::Today;$di=[io.directory]::CreateDirectory($today.ToString('yyyy-MM-dd'));gci|where{$_.CreationTime.Date -eq $today -and $_.FullName -ne $di.FullName -and $_.FullName -ne $env:batchfile}|Move-Item -Destination ($di.FullName) -Verbose"
- pause
复制代码
前几天有个帖子和你要求一样,我这边测试可以用,你改一下路径
作者: 77七 时间: 2024-9-13 17:51
回复 6# onging
源目录和目标目录不能相同。
作者: onging 时间: 2024-9-13 19:02
回复 10# 77七
我的需求是要相同的呀
作者: onging 时间: 2024-9-13 19:52
本帖最后由 onging 于 2024-9-13 20:07 编辑
回复 9# zhengzhenhui
@echo off
cd /d "%~dp0"
@REM 把当前目录下 创建日期是今天的文件和文件夹移动到 今天'yyyy-MM-dd'文件夹
set "batchfile=%~f0"
powershell -c "$today=[datetime]::Today;$di=[io.directory]::CreateDirectory($today.ToString('yyyy-MM-dd'));gci|where{$_.CreationTime.Date -eq $today -and $_.FullName -ne $di.FullName -and $_.FullName -ne $env:batchfile}|Move-Item -Destination ($di.FullName) -Verbose"
pause
这段路径在那里改
作者: 77七 时间: 2024-9-13 20:51
回复 11# onging
你对比着1楼改,也不能改成这样啊 robocopy "D:\新建文件夹" "D:\新建文件夹"
- @echo off
- for /f %%a in ('wmic os get localdatetime ^| findstr [0-9]') do (
- set d=%%a
- )
- set d1=%d:~0,4%-%d:~4,2%-%d:~6,2%
- set d2=%d:~0,4%%d:~4,2%%d:~6,2%
- robocopy "d:\新建文件夹" "d:\新建文件夹\%d1%" /s /move /xd "d:\新建文件夹\%d1%" /maxage:%d2%
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |