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

[文本处理] 【已解决】批处理重命名指定目录下所有日志文件并输出结果到文件

功能:对C盘内所有的.log文件进行一个名字修改已达到备份目的,在操作结束后恢复被备份的文件
PS:此批处理非完整的批处理,原批处理还包含对C盘所有的log文件进行删除(也就是大家都在用的垃圾清理的东东),为了检验效果所以把备份以及恢复分开两个批处理。

想问一下,我的Del操作是在Echo之前的,被操作的文件有三个,分别是“C盘根目录、C:\MJXX、C:\新建文件夹”中的三个install.log文件
但是执行的结果是被输出的文本只记录到最后一条信息,是因为IF处理到下一条内容后,执行了DEL所以在输出的时候没有前一条的记录吗?
如果是的话,是否只能把DEL放置于FOR之前?
另外,这命令还能不能精简呢?
  1. @echo off
  2. color a
  3. echo 正在备份install.log...
  4. for /R . %%i in (install.log) do (
  5. if exist "%%i" (
  6. del %systemdrive%\被修改的install.log记录.txt >nul 2>nul
  7. echo "%%i.bak" >>%systemdrive%\被修改的install.log记录.txt
  8. ren "%%i" install.log.bak
  9. ))
  10. echo 备份完毕
  11. pause
复制代码
  1. @echo off
  2. color a
  3. echo 正在恢复Install.log...
  4. for /f "tokens=*" %%i in (%systemdrive%\被修改的install.log记录.txt) do (
  5. if exist "%%i" (
  6. del /q /f %systemdrive%\被恢复的Install.log记录.txt >nul 2>nul
  7. echo %%i >>%systemdrive%\被恢复的Install.log记录.txt
  8. ren "%%i" install.log
  9. ))
  10. echo 恢复完毕
  11. pause
复制代码

[ 本帖最后由 hkmhd 于 2009-3-26 17:12 编辑 ]
1

评分人数

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

代码如下,其作用很明显了,不多说

建议不管多简单的代码,都应该在提问时把它要实现的功能详细的描述一下。以便他人查看和理解。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

果然还是被说了,功能已经加上去了,不过我自己对标题很不满意~呵呵~不知道这个帖子应该起一个什么标题

TOP

你的标题确实是非常不标准,还是先用心想个新的标题吧,
技术问题请到论坛发帖求助!

TOP

//原批处理还包含对C盘所有的log文件进行删除(也就是大家都在用的垃圾清理的东东)

参考:网上流传的“删除系统垃圾的批处理”其实本身就是一个垃圾
http://bbs.bathome.net/viewthread.php?tid=684#pid7625

//但是执行的结果是被输出的文本只记录到最后一条信息,是因为IF处理到下一条内容后,执行了DEL所以在输出的时候没有前一条的记录吗?

是的。

//如果是的话,是否只能把DEL放置于FOR之前?

可以。

//另外,这命令还能不能精简呢?

在精简代码之前,还是先把bug修复掉吧:
  1. @echo off
  2. color a
  3. echo 正在备份install.log...
  4. del %systemdrive%\被修改的install.log记录.txt >nul 2>nul
  5. for /r . %%i in (install.log) do (
  6.   if exist "%%i" (
  7.     if not exist "%%i\" (
  8.       echo "%%i.bak">>%systemdrive%\被修改的install.log记录.txt
  9.       ren "%%i" install.log.bak
  10.     )
  11.   )
  12. )
  13. echo 备份完毕
  14. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或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. color a
  3. echo 正在备份install.log...
  4. del %systemdrive%\被修改的install.log记录.txt >nul 2>nul
  5. for /r . %%i in (install.log) do (
  6.   if exist "%%i" (
  7.     if not exist "%%i\" (
  8.       echo "%%i.bak">>%systemdrive%\被修改的install.log记录.txt
  9.       ren "%%i" install.log.bak
  10.     )
  11.   )
  12. )
  13. echo 备份完毕
  14. pause
复制代码

为何要做两次判断呢?还有第二个为何是"%%i\"?
我个人不装数据库,也很少软件生成日志在C盘,日志的内容是使用if来选择性保留清除的,所以对我个人的威胁不大
我也感觉网上的那些很恶心,所以我还是定制一个属于我自己的好~呵呵~谢谢关心

TOP

回复 6楼 的帖子

做两次判断是为了排除同名文件夹
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

哦,学习了,不过什么情况下会出现这样的同名文件夹呢?
PS:Batcher兄对这类清理的东东很痛恨,不过Batcher兄是否也有自己做一个适合自己用的呢?

TOP

回复 8楼 的帖子

假设C:\test1\下有个文件夹叫做install.log
假设C:\test2\下有个文件叫做install.log

if exist "%%i" 是无法区分文件夹和文件的,它的返回结果都是真,这就是问题所在了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

彻底明白了~谢谢指导
还是那句话,对Batcher兄的痛恨很感兴趣,很想了解Batcher兄有没有使用类似垃圾清理的东东

TOP

回复 10楼 的帖子

是的,我很讨厌那种代码,我没有使用过,将来也不打算使用。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

呵呵,或许最后我只会使用一种,就是清空用户的临时文件夹~这个总不会讨厌了吧

TOP

返回列表