无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 8662|回复: 87
打印 上一主题 下一主题

[已解决] 求助大家写个批处理

  [复制链接]
跳转到指定楼层
#
发表于 2023-9-5 10:25:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 szmsys 于 2023-9-7 09:08 编辑

求助大家写个批处理:

第一步:
在 C:\sample 下 生成一个以昨天的日期命名的文件夹:YYYY-MM-DD

第二步:
把 C:\sample 下 生成日期不是今天的文件,全部移动到这个新建文件夹里

谢谢
71#
发表于 2023-9-9 18:56:26 | 只看该作者
szmsys 发表于 2023-9-9 18:34
发现一个现象:将系统时间调到明天,新建一个文件,再将系统时间调回到今天,运行批处理,生成名称是昨天 ...

正常情况系统没这么干吧。除了人为使坏。
脚本名就叫非当天。。。到前一天。。。。你自己细品。

评分

参与人数 1无忧币 +5 收起 理由
szmsys + 5 神马都是浮云

查看全部评分

回复

使用道具 举报

70#
 楼主| 发表于 2023-9-9 18:34:03 | 只看该作者
ppll2030 发表于 2023-9-9 15:42
已修正,无文件转移就不生成文件夹

发现一个现象:将系统时间调到明天,新建一个文件,再将系统时间调回到今天,运行批处理,生成名称是昨天日期的文件夹,明天生成的文件被移动进去了。
回复

使用道具 举报

69#
发表于 2023-9-9 17:52:09 | 只看该作者
szmsys 发表于 2023-9-9 17:47
删了第18行,没效果。依然生成空文件夹。另一个您改的批处理就成功了。

可以了。在原楼层改了。

评分

参与人数 1无忧币 +5 收起 理由
szmsys + 5 老大的批处理水平太厉害了!前无古人,后无.

查看全部评分

回复

使用道具 举报

68#
 楼主| 发表于 2023-9-9 17:47:39 | 只看该作者

删了第18行,没效果。依然生成空文件夹。另一个您改的批处理就成功了。
回复

使用道具 举报

67#
 楼主| 发表于 2023-9-9 17:25:10 | 只看该作者

辛苦老大。测试了,没有文件时,还是会新建一个文件夹。麻烦再看看,咋回事?谢谢
回复

使用道具 举报

66#
发表于 2023-9-9 15:42:00 | 只看该作者
本帖最后由 ppll2030 于 2023-9-9 17:56 编辑
szmsys 发表于 2023-9-9 15:10
老大好,能否再辛苦一下,把这个也弄成:如果没有符合条件的文件,就不生成文件夹?谢谢

已修正,无文件转移就不生成文件夹
  1. @echo off
  2. title: 查找和移动非当天创建的文件到前一天命名的文件夹中

  3. for /f "tokens=3" %%i in ('reg query "HKCU\Control Panel\International" ^| findstr /ilc:"sShortDate"') do set sShortDate=%%i
  4. for /f "tokens=2,*" %%j in ('reg query "HKCU\Control Panel\International" ^| findstr /ilc:"sTimeFormat"') do set sTimeFormat="%%k"
  5. reg add "HKCU\Control Panel\International" /f /v "sShortDate" /t REG_SZ /d "yyyy/MM/dd" >nul
  6. reg add "HKCU\Control Panel\International" /f /v "sTimeFormat" /t REG_SZ /d "HH:mm:ss" >nul

  7. (echo yd=Date(^)-1
  8. echo wscript.echo yd
  9. ) > yd.vbs
  10. for /f %%a in ('cscript yd.vbs') do set yd=%%a
  11. del /q yd.vbs
  12. SET YYD=%yd:/=-%
  13. echo.&echo 即将把%date%以前(不含当日)创建的文件全部转移到%YYD%文件夹下。
  14. echo.&pause

  15. set p=c:\sample
  16. FOR /f "tokens=3,*" %%a IN ('dir /a-d /tc %p% ^| findstr /ilc:"/" ^| FINDSTR /ilvc:"%date%"')  DO (
  17.         if not exist %p%\%YYD% md %p%\%YYD%
  18.         move "%p%\%%b" "%p%\%YYD%") >nul 2>nul
  19.         
  20. reg add "HKCU\Control Panel\International" /f /v "sShortDate" /t REG_SZ /d "%sShortDate%" >nul
  21. reg add "HKCU\Control Panel\International" /f /v "sTimeFormat" /t REG_SZ /d "%sTimeFormat%" >nul
  22. cls&echo.&echo %date%以前创建的文件转移完成。
  23. timeout /t 2 >nul
复制代码

评分

参与人数 1无忧币 +5 收起 理由
szmsys + 5 很给力!

查看全部评分

回复

使用道具 举报

65#
 楼主| 发表于 2023-9-9 15:10:23 | 只看该作者
ppll2030 发表于 2023-9-6 17:12
OK。是我忽略了。sorry!
找了一台win7试了一下。出现你的这些问题了。还有一个时间的显示问题
...

老大好,能否再辛苦一下,把这个也弄成:如果没有符合条件的文件,就不生成文件夹?谢谢
回复

使用道具 举报

64#
发表于 2023-9-8 14:16:17 | 只看该作者
szmsys 发表于 2023-9-8 11:52
谢谢老大!这个是根据文件生成日期,能不能再弄个根据文件修改日期的,谢谢

把19行的查询参数改一下即可    找到 dir /a-d /tc %p%  ,把/tc删除即可。

评分

参与人数 1无忧币 +5 收起 理由
szmsys + 5 明白了,谢谢!

查看全部评分

回复

使用道具 举报

63#
发表于 2023-9-8 12:02:02 | 只看该作者
路过,学习了
回复

使用道具 举报

62#
 楼主| 发表于 2023-9-8 11:52:12 | 只看该作者
ppll2030 发表于 2023-9-7 23:59
如果你的机器使用 “上午 9:15” 这样的时间格式,脚本有可能出现恢复错误。
请手动改回时间显示后,重 ...

谢谢老大!这个是根据文件生成日期,能不能再弄个根据文件修改日期的,谢谢
回复

使用道具 举报

61#
发表于 2023-9-7 23:59:23 | 只看该作者
szmsys 发表于 2023-9-7 09:07
终于好用了!谢谢您!

如果你的机器使用 “上午 9:15” 这样的时间格式,脚本有可能出现恢复错误。
请手动改回时间显示后,重新下载脚本再用吧。已在原楼层作了修改。
http://bbs.wuyou.net/forum.php?m ... &fromuid=767159

评分

参与人数 1无忧币 +5 收起 理由
szmsys + 5 谢谢老大!这个是根据文件生成日期,能不能.

查看全部评分

回复

使用道具 举报

60#
 楼主| 发表于 2023-9-7 09:07:51 | 只看该作者
ppll2030 发表于 2023-9-6 17:12
OK。是我忽略了。sorry!
找了一台win7试了一下。出现你的这些问题了。还有一个时间的显示问题
...

终于好用了!谢谢您!
回复

使用道具 举报

59#
 楼主| 发表于 2023-9-7 09:06:57 | 只看该作者
chiannet 发表于 2023-9-6 22:12
去掉所有外部命令,只使用cmd内部命令,在32位03PE及64位 Win 7系统及64位Win 10系统下测试通过。

终于好用了!谢谢您!
回复

使用道具 举报

58#
发表于 2023-9-7 09:06:52 | 只看该作者
  1. @Echo Off
  2. Setlocal Enabledelayedexpansion

  3. Set "WokDir=d:\Sample"

  4. Call :DateDiff "%Date%" -1 DT
  5. Set NP="%WokDir%\%DT%"
  6. (Md "%WokDir%"
  7. Md %NP%) 2>NUL
  8. If Not Exist %NP% Echo 目录创建失败!&Goto :End
  9. For /f "Delims=" %%i in ('Dir "%WokDir%" /A:-D /T:C') Do Call :Action "%%i" "%~0"



  10. :End
  11. Pause
  12. Exit


  13. :Action
  14.         Set "X=%~1"
  15.         Set Fx="%WokDir%\!X:%X:~0,36%=!"
  16.         If /i Not %Fx%==%2 (
  17.                 Set FC=%X:~0,10%
  18.                 Set FC=!FC:-=/!
  19.         Set DN=%Date:~0,10%
  20.                 If "!FC:~4,1!"=="/" If Not "!FC!"=="!DN:-=/!" Move /Y %Fx% %NP%
  21.         )
  22. Goto :Eof


  23. :DateDiff
  24.         Setlocal
  25.         For /f "Tokens=1-3 Delims=/-:\, " %%a In ('Echo /%~1') Do Set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100
  26.         Set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,i=153*m+2
  27.         Set /a i=i/5+dd+y*365+y/4-y/100+y/400-2472633+%~2
  28.         Set /a a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
  29.         Set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
  30.         Set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  31.         Set mm=0%mm%
  32.         Set dd=0%dd%
  33.         Endlocal &Set %3=%yy%-%mm:~-2%-%dd:~-2%
  34. Goto :Eof
复制代码


回复

使用道具 举报

57#
发表于 2023-9-7 07:40:15 | 只看该作者
学习了,谢谢分享
回复

使用道具 举报

56#
发表于 2023-9-7 06:54:43 | 只看该作者
本帖最后由 chiannet 于 2023-9-7 09:07 编辑

复制代码

评分

参与人数 1无忧币 +5 收起 理由
szmsys + 5 辛苦!谢谢!我测试下。

查看全部评分

回复

使用道具 举报

55#
发表于 2023-9-6 23:06:11 | 只看该作者
dvs909 发表于 2023-9-5 23:49
import os
import shutil
from datetime import datetime, timedelta

Python
回复

使用道具 举报

54#
发表于 2023-9-6 22:12:16 | 只看该作者
本帖最后由 chiannet 于 2023-9-7 00:12 编辑
szmsys 发表于 2023-9-6 17:58
辛苦了!我明天再试试

去掉所有外部命令,只使用cmd内部命令,在32位03PE及64位 Win 7系统及64位Win 10系统下测试通过。
  1. @Echo Off
  2. Setlocal Enabledelayedexpansion

  3. Set "WokDir=f:\Sample"

  4. For /f "Tokens=1-3 Delims=/ " %%I In ('Echo %Date:-=/%') Do (
  5.         Set MC=0%%J
  6.         Set DC=0%%K
  7.         Call :DateDiff %%I-%%J-%%K -1 T
  8.         Md "%WokDir%"
  9.         Set T="%WokDir%\!T!"
  10.         Md !T!
  11.         If Not Exist !T! Echo 目录创建失败!&Goto :End
  12.         For /f "Delims=" %%i in ('Dir "%WokDir%" /A:-D /T:C') Do Call :Action "%%i" "%~0" "%%I/!MC:~-2!/!DC:~-2!" "!T!"
  13. ) 2>nul


  14. :End
  15. Pause
  16. Exit


  17. :Action
  18.         Set "X=%~1"
  19.         Set Fx="%WokDir%\!X:%X:~0,36%=!"
  20.         If /i %Fx%==%2 Goto :Eof
  21.         If Not "%X:~4,1%"=="/" (If "%X:~4,1%"=="-" (Set "X=%X:~0,4%/%X:~5,2%/!X:%X:~0,8%=!") Else (Goto :Eof))
  22.         If Not "%X:~0,10%"==%3 Move /Y %Fx% %4       
  23. Goto :Eof


  24. :DateDiff
  25.         Setlocal
  26.         For /f "Tokens=1-3 Delims=/-:\, " %%a In ('Echo /%~1') Do Set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100
  27.         Set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,i=153*m+2
  28.         Set /a i=i/5+dd+y*365+y/4-y/100+y/400-2472633+%~2
  29.         Set /a a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
  30.         Set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
  31.         Set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  32.         Set mm=0%mm%
  33.         Set dd=0%dd%
  34.         Endlocal &Set %3=%yy%-%mm:~-2%-%dd:~-2%
  35. Goto :Eof
复制代码


评分

参与人数 1无忧币 +5 收起 理由
szmsys + 5 谢谢,我试试

查看全部评分

回复

使用道具 举报

53#
 楼主| 发表于 2023-9-6 17:58:08 | 只看该作者
ppll2030 发表于 2023-9-6 17:12
OK。是我忽略了。sorry!
找了一台win7试了一下。出现你的这些问题了。还有一个时间的显示问题
...

辛苦了!我明天再试试
回复

使用道具 举报

52#
 楼主| 发表于 2023-9-6 17:57:49 | 只看该作者
chiannet 发表于 2023-9-6 17:19
冒号要英文的哦,从截图看,你的“c:”是中文冒号,应该是"c:"

我只是回帖用的不对。批处理是英文的。可以确定,你呢的修改版只能生成文件夹,无法移动文件。我是win7 64位系统,您可以测试一下
回复

使用道具 举报

51#
发表于 2023-9-6 17:19:07 | 只看该作者
szmsys 发表于 2023-9-6 15:07
权限没问题,因为运行您的批处理后,里面出现了新生成的文件夹,只是文件没有被移动。

捶打的代码,连 ...

冒号要英文的哦,从截图看,你的“c:”是中文冒号,应该是"c:"
回复

使用道具 举报

50#
发表于 2023-9-6 17:15:27 | 只看该作者
helloman 发表于 2023-9-6 17:01
看了下,应该是文件创建日期问题,我把以前创建的文件移动到d:\sample下,执行这个批处理,创建了以昨天 ...

只搬动“创建日期”符合“非今日”的文件,并不理会“修改日期”为非今日文件。

但Windows 资源浏览器通常只显示“修改日期”。
回复

使用道具 举报

49#
发表于 2023-9-6 17:12:11 | 只看该作者
本帖最后由 ppll2030 于 2023-9-7 23:55 编辑
szmsys 发表于 2023-9-6 15:57
系统找不到指定文件,啥意思?是不是批处理执行的命令找不到?

OK。是我忽略了。sorry!
找了一台win7试了一下。出现你的这些问题了。还有一个时间的显示问题
下面的是WIN7-10通用。已测试。
之前的原因主要是7和10对于日期和时间的默认显示格式不同造成了。
现在用注册表的办法统一的显示格式,以下的脚本就通用了。
脚本含有注册表备份和还原功能,所以不同的显示格式在运行脚本后都还原,不做永久修改。
还有:set p=c:\sample 这条,你可以自由修改后面的路径,d:\sample 或 e:\xxxx\sample  注意用英文的冒号。


2023-09-07 PS:  如果使用 “上午 9:10” 这种格式显示时间,可能出现恢复错误。现已修正。
  1. @echo off
  2. title: 查找和移动非当天创建的文件到前一天命名的文件夹中
  3. for /f "tokens=3" %%i in ('reg query "HKCU\Control Panel\International" ^| findstr /ilc:"sShortDate"') do set sShortDate=%%i
  4. for /f "tokens=2,*" %%j in ('reg query "HKCU\Control Panel\International" ^| findstr /ilc:"sTimeFormat"') do set sTimeFormat="%%k"
  5. reg add "HKCU\Control Panel\International" /f /v "sShortDate" /t REG_SZ /d "yyyy/MM/dd" >nul
  6. reg add "HKCU\Control Panel\International" /f /v "sTimeFormat" /t REG_SZ /d "HH:mm:ss" >nul

  7. (echo yd=Date(^)-1
  8. echo wscript.echo yd
  9. ) > yd.vbs
  10. for /f %%a in ('cscript yd.vbs') do set yd=%%a
  11. del /q yd.vbs
  12. SET YYD=%yd:/=-%
  13. echo.&echo 即将把%date%以前(不含当日)创建的文件全部转移到%YYD%文件夹下。
  14. echo.&pause

  15. set p=c:\sample
  16. md "%p%\%YYD%" >nul 2>nul
  17. FOR /f "tokens=3,*" %%a IN ('dir /a-d /tc %p% ^| FINDSTR /ilvc:"%date%"')  DO move "%p%\%%b" "%p%\%YYD%" >nul 2>nul

  18. reg add "HKCU\Control Panel\International" /f /v "sShortDate" /t REG_SZ /d "%sShortDate%" >nul
  19. reg add "HKCU\Control Panel\International" /f /v "sTimeFormat" /t REG_SZ /d "%sTimeFormat%" >nul
  20. cls&echo.&echo %date%以前创建的文件转移完成。
  21. timeout /t 2 >nul
复制代码






评分

参与人数 1无忧币 +5 收起 理由
szmsys + 5 辛苦了,我明天试试

查看全部评分

回复

使用道具 举报

48#
发表于 2023-9-6 17:01:53 | 只看该作者
szmsys 发表于 2023-9-6 15:07
权限没问题,因为运行您的批处理后,里面出现了新生成的文件夹,只是文件没有被移动。

捶打的代码,连 ...

看了下,应该是文件创建日期问题,我把以前创建的文件移动到d:\sample下,执行这个批处理,创建了以昨天日期命名的新文件夹,但没有移动文件
回复

使用道具 举报

47#
发表于 2023-9-6 16:49:28 | 只看该作者
目前chiannet和ppll2030两位的批处理都使用正常,怎么修改可以同时移动今日以前创建的文件和文件夹?
回复

使用道具 举报

46#
发表于 2023-9-6 16:07:40 | 只看该作者
szmsys 发表于 2023-9-6 15:57
系统找不到指定文件,啥意思?是不是批处理执行的命令找不到?

我的脚本不会有这个提示。你要不是乱改,就不是我的脚本。
那我也不知道哪里的问题。
回复

使用道具 举报

45#
发表于 2023-9-6 15:58:10 | 只看该作者
szmsys 发表于 2023-9-6 15:21
路径默认 c:\sample 我在命令行最后加了 pause 出现如图提示:

另外,我想改目录,怎么办啊?谢谢

有没感觉\前面空得多了。
回复

使用道具 举报

44#
 楼主| 发表于 2023-9-6 15:57:43 | 只看该作者
ppll2030 发表于 2023-9-6 15:41
你没改是不会出现提示的。

因为我已经把这些提示默认都隐藏了。

系统找不到指定文件,啥意思?是不是批处理执行的命令找不到?
回复

使用道具 举报

43#
发表于 2023-9-6 15:41:31 | 只看该作者
szmsys 发表于 2023-9-6 15:33
我没改动,为什么提示:系统找不到指定的文件

你没改是不会出现提示的。

因为我已经把这些提示默认都隐藏了。

把这乱改的删了吧。重新复制脚本再保存一个新的吧
回复

使用道具 举报

42#
 楼主| 发表于 2023-9-6 15:33:51 | 只看该作者
ppll2030 发表于 2023-9-6 15:30
你直接复制新的路径过来就行了。
这个set 就是为了方便你更换路径的。其他不需要动。
手动改,注意要用 ...

我没改动,为什么提示:系统找不到指定的文件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-18 16:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表