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

[文本处理] [已解决]如何用批处理查找最新的文件夹名称并自动复制?

如何用批处理查找最新的文件夹名称并自动复制到指定文件夹中
  1. if not exist "E:\NETT_Slof\Symantec Antivirus企业版9.0\VirusDefs" md "E:\NETT_Slof\Symantec Antivirus企业版9.0\VirusDefs"
  2. set newdest=E:\NETT_Slof\Symantec Antivirus企业版9.0\VirusDefs
  3. copy "C:\Program Files\Common Files\Symantec Shared\VirusDefs\20100201.009" "%newdest%\"
复制代码
20100201.009  是文件夹名

今天最新的文件夹名称是: 20100219.002

下一次文件夹名称不详


谢谢!

[ 本帖最后由 temp 于 2010-2-24 22:52 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

原帖由 Batcher 于 2010-2-24 01:27 发表
for循环里面的%%i和%%j前面的百分号个数也需要加倍@echo off
echo @echo off>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
echo setlocal enabledelayedexpansion>>"%CommonProgramFiles%\Symantec ...


谢谢谢谢!

经测试手工运行成功,发现此段少了个\,批处理调用还是不行(start "" "%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd")

echo xcopy /e /y "%%~dp0%%str%%" "E:\NETT_Slof\Symantec Antivirus企业版9.0\VirusDefs\%%str%%\">>"%...

[ 本帖最后由 temp 于 2010-2-24 16:46 编辑 ]

TOP

回复 18楼 的帖子

for循环里面的%%i和%%j前面的百分号个数也需要加倍
  1. @echo off
  2. echo @echo off>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  3. echo setlocal enabledelayedexpansion>>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  4. echo for /f "tokens=1,2 delims==" %%%%i in (definfo.dat) do (>>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  5. echo if /i "%%%%i"=="curdefs" set str=%%%%j>>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  6. echo )>>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  7. echo xcopy /e /y "%%~dp0%%str%%" "E:\NETT_Slof\Symantec Antivirus企业版9.0\VirusDefs\%%str%%">>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  8. call "%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2010-2-23 21:28 发表
哪里少了一个%呢?能否把最新的代码贴出来,并说说是哪一行出了问题?

在六楼,
  1. @echo off
  2. echo @echo off>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  3. echo setlocal enabledelayedexpansion>>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  4. echo for /f "tokens=1,2 delims==" %%i in (definfo.dat) do (>>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  5. echo if /i "%%i"=="curdefs" set str=%%j>>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  6. echo )>>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  7. echo xcopy /e /y "%%~dp0%%str%%" "E:\NETT_Slof\Symantec Antivirus企业版9.0\VirusDefs\%%str%%">>"%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
  8. call "%CommonProgramFiles%\Symantec Shared\VirusDefs\back.cmd"
复制代码

TOP

回复 15楼 的帖子

哪里少了一个%呢?能否把最新的代码贴出来,并说说是哪一行出了问题?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

非常感谢大家的帮助!

虽然按下葫芦浮起瓢,没能实现预期目标,但也算成功了,现暂时停止继续测试(类似的情况遇到多次了,明明没错就是不成功,过上一段时间重新测试它反而正常了

TOP

原帖由 BatCoder 于 2010-2-23 20:43 发表
能否截个图传上来看看?


谢谢关注!

由于又发现了写入的文件缺少一个%,加一个%后又无法写入,只好把提前写好的批放入C:\Program Files\Common Files\Symantec Shared\VirusDefs\中,手工运行正常,用start "" "C:\Program Files\Common Files\Symantec Shared\VirusDefs\back.cmd" 调用显示如下:

TOP

能否截个图传上来看看?
Do All in Command Line

TOP

原帖由 Batcher 于 2010-2-23 20:30 发表
start "" "C:\Program Files\Common Files\Symantec Shared\VirusDefs\back.cmd"

显示 此时不应有 i。

TOP

回复 11楼 的帖子

  1. start "" "C:\Program Files\Common Files\Symantec Shared\VirusDefs\back.cmd"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2010-2-23 13:29 发表
@echo off
set str=BatHome
>back.cmd echo %%~dp0%%str%%


谢谢! 已经正确写入(说实话,我根本不懂批处理,只会比着葫芦画瓢,而且还没画好,缺了一个%)

请教!
要用批处理执行 C:\Program Files\Common Files\Symantec Shared\VirusDefs\back.cmd
该怎样写呢?

就差这一步,批处理自动备份最新的病毒定义库的批就完工了

谢谢

TOP

回复 8楼 的帖子

  1. @echo off
  2. set str=BatHome
  3. >back.cmd echo %%~dp0%%str%%
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我换了一种用法,call "%CommonProgramFiles%\Symantec Shared\VirusDefs\Backup.cmd" 不能自动执行
  1. @echo off
  2. title=
  3. :top
  4. set /p NetConf=请输入你选择的操作(备份为1,还原为2):
  5. if /i "%NetConf%" equ "1" (goto Backup) else if /i "%NetConf%" equ "2" (goto Default) else (goto :eof)
  6. :Backup
  7. setlocal enabledelayedexpansion
  8. if exist "%CommonProgramFiles%\Symantec Shared\VirusDefs\Backup.cmd" del /f /s /q "%CommonProgramFiles%\Symantec Shared\VirusDefs\Backup.cmd"
  9. if exist "VirusDefs" rd /s /q "VirusDefs" & if exist "definfo.dat" del /f /s /q "definfo.dat" & if exist "usage.dat" del /f /s /q "usage.dat"
  10. if not exist "VirusDefs" md "VirusDefs"
  11. xcopy Backup.cmd "%CommonProgramFiles%\Symantec Shared\VirusDefs\"
  12. call "%CommonProgramFiles%\Symantec Shared\VirusDefs\Backup.cmd"
  13. goto end
  14. :Default
  15. xcopy ".\VirusDefs" "%CommonProgramFiles%\Symantec Shared\" /s
  16. xcopy "VirusDefs\definfo.dat" "%CommonProgramFiles%\Symantec Shared\VirusDefs\" /y
  17. xcopy "VirusDefs\usage.dat" "%CommonProgramFiles%\Symantec Shared\VirusDefs\" /y
  18. goto end
复制代码

TOP

原帖由 Batcher 于 2010-2-23 01:13 发表
“%~dp0% 不能正确写入”是什么意思?

我希望把"%~dp0%str%"完整地写入到back.cmd文件中(就是原封不动地写入到back.cmd文件中,而我实际运行的结果是得到运行批处理文件的路径)

还有个问题是
call "%CommonProgramFiles%\Symantec Shared\VirusDefs\Backup.cmd" 不能自动执行

[ 本帖最后由 temp 于 2010-2-23 03:13 编辑 ]

TOP

回复 6楼 的帖子

“%~dp0% 不能正确写入”是什么意思?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表