[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 11# flashercs
谢谢!我系统日期格式是:2024/9/7   是斜杠的

TOP

回复  onging


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

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

谢谢,下次注意!

TOP

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

TOP

本帖最后由 aloha20200628 于 2024-9-7 16:41 编辑

回复 18# onging

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

TOP

回复  onging

是要指定一个已有的 ‘目的地’ 文件夹?还是要新建一个自定义名称的 ‘目的地’ 文件夹? ...
aloha20200628 发表于 2024-9-7 16:33

谢谢!这段代码在那里更改“要移动的当天文件夹和文件的目录”和“当天日期文件夹的目录”呢,不好意思,菜鸟一枚!

TOP

本帖最后由 aloha20200628 于 2024-9-7 18:57 编辑

回复 20# onging

在已被订正的15楼代码第二行》
   d:\目标文件夹  可改为你要移动当日数据的文件夹名(须是全路径,例如 d:\abc\1)
   d:\目的地文件夹  可改为被移动数据的目的地文件夹名(须是全路径,例如 d:\xyz\1),在此文件夹下将生成名如 ‘2024-09-07’ 的当日文件夹

TOP

回复  onging

在已被订正的15楼代码第二行》
   d:\目标文件夹  可改为你要移动当日数据的文件夹名(须 ...
aloha20200628 发表于 2024-9-7 18:53

谢谢!这个更完美,但还想取消“请按任意键继续”的弹窗,应该删除那一段呢?

TOP

回复 22# onging

代码最后一行改为》 del /q "%tf%"&endlocal&exit/b  即可

TOP

回复 23# aloha20200628
谢谢!还想问一下,英文系统和中文系统都会通用的吗?主要是时间格式

TOP

回复 24# onging

老美用的英文版有可能采用 08/31/2024 这类时间格式,可先用小样本数据试一下代码看看结果...

TOP

回复 25# aloha20200628
谢谢!,也一样可以了

TOP

需要什么格式可以再系统里自己设置:
1

评分人数

    • 77七: 感谢分享技术 + 1

TOP

多谢11楼、27楼两位大佬提醒
重新写了一个,尽量排除 不同系统或者个性化设置导致的日期时间格式不同影响。
  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. set d=%d:~0,4%-%d:~4,2%-%d:~6,2%
  7. cd.>d.d
  8. for /f "tokens=1*" %%i in ('dir /tc "d.d" ^| findstr "d\.d$"') do (
  9. for %%a in (%%j) do (
  10. set /a n+=1
  11. )
  12. set _d=%%i
  13. )
  14. del d.d
  15. for /f "tokens=%n%*" %%a in ('dir /tc ^| findstr "^%_d%" ^| findstr /iv "\.$ \.cmd$ \.bat$ [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$"') do (
  16. if exist "%%b\" (
  17. robocopy "%%b" "%d%\%%b" /e /move
  18. ) else (
  19. robocopy . "%d%" "%%b" /mov
  20. )
  21. )
  22. pause
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 aloha20200628 于 2024-9-11 11:15 编辑


     进一步验证》系统日期的格式设置确实有很多种,其设置结果基本与资源管理器的日期显示格式一致,但与%date%, %%~tF和dir列表的日期取值格式不一定相同,无论系统日期格式如何调整,后三者除了分隔符与其保持一致之外,日期值净长度总是在8位(如24-01-31)或10位(如2024-01-31)取值,而资源管理器的日期显示格式可在6-10位之间变化,因此%date%的更稳妥取值方法是用 for /f "tokens=1 delims= " %%a in ("%date%") do set "td=%%a"
     以下代码是将15楼代码重写成不调用findstr筛选当日数据的版本,直接用dir/b/tw/o-d排序,令当日数据置顶,从而能对其首先处理并及时结束退出,也免去了采用findstr须检测时间字段个数等关联处理问题...
  1. @echo off &setlocal
  2. for /f "tokens=1 delims= " %%a in ("%date%") do set "td=%%a"
  3. if "%td:~8,1%"=="" (set "e=tt:~0,8") else set "e=tt:~0,10"
  4. cd /d "d:\目标文件夹" &set "dt=d:\目的地文件夹\%td:/=-%"
  5. md "%dt%" 2>nul
  6. for /f "delims=" %%F in ('dir /b/tw/o-d') do if "%%~fF" neq "%~f0" (
  7. setlocal enabledelayedexpansion &set "tt=%%~tF" &set "tt=!%e%!"
  8. if "%td%"=="!tt!" (endlocal & move /y "%%F" "%dt%\") else endlocal&pause&exit/b
  9. )
  10. endlocal&pause&exit/b
复制代码

TOP

本帖最后由 qixiaobin0715 于 2024-9-10 16:50 编辑

没看明白第3行是啥意思,好像最终都是else成立。


既然日期字符数有差异,那么就都取8位是否更直接,就不用什么if再else了。


大概看了看,修改时间日期格式后,%date%和文件中(%~tI)的格式同步变化,并无不同,所以不用考虑格式问题,该如何就如何。

TOP

返回列表