[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aloha20200628 于 2024-9-7 16:41 编辑

回复 18# onging

是要指定一个已有的 ‘目的地’ 文件夹?还是要新建一个自定义名称的 ‘目的地’ 文件夹? 总之,建议这个 ‘目的地’  文件夹尽可能与当前文件夹分开...
15楼代码已更新,关闭了 move 过程的回显...

TOP

回复 15# aloha20200628
这段可以谢谢!但想修改一下,他默认是在上一级目录生成日期文件夹,可不可以指定目录生成日期文件夹并移动吗?,还有可以取消回显吗?

TOP

回复  onging


如果需要上传文件,请用使用网盘。

如果需要上传截图,可以找个图床,例如:
Batcher 发表于 2024-9-6 21:49

谢谢,下次注意!

TOP

回复 11# flashercs
谢谢!我系统日期格式是:2024/9/7   是斜杠的

TOP

本帖最后由 aloha20200628 于 2024-9-7 19:38 编辑


为批处应对此类题型留下前车之鉴》
   取值 %date% 须截取 %date:~0,10%,
   用其创建目录前须置换其中分隔符 %date:/=-%,
   提取 dir 全量列表后几项数据前须检测其中时间字段的个数...
以下代码是对3,8,14楼代码的完整修复... 运行结果会将 ‘d:\目标文件夹’ 中当日创建生成的目录和文件移至 ‘d:\目的地文件夹\20240907’ 目录中...
  1. @echo off &setlocal &set "td=%date:/=-%"
  2. cd /d "d:\目标文件夹" &set "td=d:\目的地文件夹\%td:~0,10%"
  3. md "%td%" 2>nul &set "tf=%td%\all.tmp"
  4. dir /tc/o-d|findstr /bc:"%date:~0,10% ">"%tf%" &set/p s=<"%tf%"
  5. if "%s:~14,1%"==":" (set "q=3") else (set "q=4")
  6. (for /f "tokens=%q%* delims= " %%a in (%tf%) do if "%%b" neq "." if "%%b" neq ".." if /i "%%b" neq "%~nx0" move /y "%%b" "%td%\")>nul 2>nul
  7. del /q "%tf%"&endlocal&pause&exit/b
复制代码

TOP

本帖最后由 aloha20200628 于 2024-9-6 22:09 编辑

回复 9# onging

谢谢10,11楼提醒
若楼主 dir 列表显示的时间格式如11楼所示 2024/09/06 周五 .... 则8楼代码须订正如下,其实就是多了一个 ‘周五’ 的字段

  1. @echo off &setlocal &set "td=%date:/=-%"
  2. md "..\%td:~0,10%" 2>nul
  3. (for /f "tokens=4* delims= " %%a in ('dir /tc/o-d^|findstr /bc:"%date:~0,10% " ') do if "%%b" neq "." if "%%b" neq ".." if /i "%%b" neq "%~nx0" move /y "%%b" "..\%td:~0,10%\") 2>nul
  4. endlocal&pause&exit/b
复制代码

TOP

回复 9# onging


如果需要上传文件,请用使用网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. cd /d "%~dp0"
  3. for /f %%a in ('wmic os get localdatetime ^| findstr [0-9]') do (
  4. set d=%%a
  5. )
  6. for /f "tokens=1-3*" %%a in ('dir /tc ^| findstr /rive /c:"\." /c:"\.bat" /c:"\.cmd"') do (
  7. if "%%a" equ "%d:~0,4%/%d:~4,2%/%d:~6,2%" (
  8. if "%%d" neq "%d:~0,4%-%d:~4,2%-%d:~6,2%" (
  9. if exist "%%d\" (
  10. robocopy "%%d" "%d:~0,4%-%d:~4,2%-%d:~6,2%/%%d" /e /move
  11. ) else (
  12. robocopy . "%d:~0,4%-%d:~4,2%-%d:~6,2%" "%%d" /mov
  13. )
  14. )
  15. )
  16. )
  17. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 9# onging
上传图片可用图床: http://bbs.bathome.net/thread-60985-1-1.html
系统日期格式

dir日期格式
1

评分人数

    • 77七: 感谢分享技术 + 1
微信:flashercs
QQ:49908356

TOP

本帖最后由 ppll2030 于 2024-9-6 20:57 编辑

回复 9# onging


    哈哈,大佬今天可能有点晕。

你试试把第三行前半部分的个地方改一下试试。

/bc:"%td:~0,10% " 改为 /bc:"%date:~0,10% "

TOP

本帖最后由 onging 于 2024-9-6 19:14 编辑

回复 8# aloha20200628
依然不起作用
我的是win7系统,日期应该是默认的,上传图片失败呢?

TOP

本帖最后由 aloha20200628 于 2024-9-6 21:59 编辑

回复 7# ppll2030
回复 4# onging

谢谢!据此再修理一下3楼代码如下。
想起了以前曾和77七讨论过不同系统版本的%date%返回值不一定相同的问题,稳妥之策还是要用 %date:~0,10% 取值...
  1. @echo off &setlocal &set "td=%date:/=-%"
  2. md "..\%td:~0,10%" 2>nul
  3. (for /f "tokens=3* delims= " %%a in ('dir /tc/o-d^|findstr /bc:"%td:~0,10% " ') do if "%%b" neq "." if "%%b" neq ".." if /i "%%b" neq "%~nx0" move /y "%%b" "..\%td:~0,10%\") 2>nul
  4. endlocal&pause&exit/b
复制代码

TOP

回复 6# aloha20200628


    楼主的系统日期可能还是默认用的 / 分隔符。所以无法正确创建文件夹

TOP

本帖最后由 aloha20200628 于 2024-9-6 14:40 编辑

回复 4# onging

我测试顺利通过的系统:
   系统日期变量 %date% 采用的序列和分隔符如是 2024-09-06,命令行用 echo,%date% 即可查看结果;
   系统码页(命令行用 chcp 查看)是936,不是65001
   与楼主有差别吗?
重新调整了3楼代码获取当天时间值的方法,如果与楼主采用的系统码页没有差别,再试试3楼代码应该可以了...

TOP

回复 2# flashercs
谢谢!可以了!

TOP

返回列表