无忧启动论坛

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

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

  [复制链接]
31#
发表于 2023-9-6 07:43:42 | 只看该作者
回复

使用道具 举报

32#
发表于 2023-9-6 08:05:59 | 只看该作者
我一看,全是用GPT写的。。你自己找GPT,然后慢慢测试。。
回复

使用道具 举报

33#
 楼主| 发表于 2023-9-6 08:39:39 | 只看该作者
本帖最后由 szmsys 于 2023-9-6 08:48 编辑

问题:今天的不移动,昨天的不移动,前天的移动
生成的文件夹名称是昨天,但是它只移动前天之前的文件。比如今天是2023/9/6,它只移动2023/9/4及之前的文件,2323/9/5号的文件不移动,咋回事?

回复

使用道具 举报

34#
发表于 2023-9-6 09:12:31 | 只看该作者
AI真的让这些便利啦
回复

使用道具 举报

35#
 楼主| 发表于 2023-9-6 10:34:09 | 只看该作者


前天及之前生成的文件移动了,但是昨天生成的文件没有移动
回复

使用道具 举报

36#
发表于 2023-9-6 12:54:44 | 只看该作者
szmsys 发表于 2023-9-6 10:34
前天及之前生成的文件移动了,但是昨天生成的文件没有移动

我测试没问题,31楼是测试"D:\sample",用的时候试着改为“C:\sample”。
回复

使用道具 举报

37#
 楼主| 发表于 2023-9-6 13:24:37 | 只看该作者
本帖最后由 szmsys 于 2023-9-6 14:30 编辑
chiannet 发表于 2023-9-6 12:54
我测试没问题,31楼是测试"D:\sample",用的时候试着改为“C:\sample”。

谢谢,已经改成 c:\sample。发现 C:\sample 无效,但是 D:\sample 成功,真是奇怪。
回复

使用道具 举报

38#
发表于 2023-9-6 14:17:14 | 只看该作者
szmsys 发表于 2023-9-6 08:39
问题:今天的不移动,昨天的不移动,前天的移动
生成的文件夹名称是昨天,但是它只移动前天之前的文件。 ...

看运行时的提示,第一个时间是今天,第二个时间是昨天。就对了。反之检查你的系统时间吧。
这个依然是根据创建时间排查的。转移文件部分没问题。只要时间对的上就行。
回复

使用道具 举报

39#
发表于 2023-9-6 14:59:44 | 只看该作者
本帖最后由 chiannet 于 2023-9-7 09:08 编辑
szmsys 发表于 2023-9-6 13:24
谢谢,已经改成 c:\sample。发现 C:\sample 无效,但是 D:\sample 成功,真是奇怪。

检查一下 C:\sample 权限,是否设置了访问权限?
代码再捶打一下:

复制代码


评分

参与人数 1无忧币 +5 收起 理由
szmsys + 5 成功生成文件夹,但是没有移动文件

查看全部评分

回复

使用道具 举报

40#
 楼主| 发表于 2023-9-6 15:07:32 | 只看该作者
chiannet 发表于 2023-9-6 14:59
检查一下 C:\sample 权限,是否设置了访问权限?
代码再捶打一下:

权限没问题,因为运行您的批处理后,里面出现了新生成的文件夹,只是文件没有被移动。

捶打的代码,连 D 盘都无效了,还不如原来的
回复

使用道具 举报

41#
 楼主| 发表于 2023-9-6 15:21:44 | 只看该作者
本帖最后由 szmsys 于 2023-9-6 15:29 编辑

路径默认 c:\sample 我在命令行最后加了 pause 出现如图提示:

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

捕获.JPG (33.09 KB, 下载次数: 182)

捕获.JPG

捕获.JPG (42.88 KB, 下载次数: 207)

捕获.JPG
回复

使用道具 举报

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

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

你直接复制新的路径过来就行了。
这个set 就是为了方便你更换路径的。其他不需要动。
手动改,注意要用英文冒号,中文冒号就会出错。
回复

使用道具 举报

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

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

使用道具 举报

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

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

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

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

使用道具 举报

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

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

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

使用道具 举报

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

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

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

捶打的代码,连 ...

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

使用道具 举报

50#
发表于 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 辛苦了,我明天试试

查看全部评分

回复

使用道具 举报

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

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

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

使用道具 举报

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

捶打的代码,连 ...

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

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

55#
发表于 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 谢谢,我试试

查看全部评分

回复

使用道具 举报

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

Python
回复

使用道具 举报

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

复制代码

评分

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

查看全部评分

回复

使用道具 举报

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

使用道具 举报

59#
发表于 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
复制代码


回复

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-19 02:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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