none
请帮忙写一段批处理命令,大约三四行就能做到。就是拷贝文件和改名的。 RRS feed

  • 问题

  • 昨天第一次使用新浪的微盘,把网络端的文件同步到本机后,就把网络端的文件都删除了,然后就没管。今天早晨一看,本机上的文件也都删除了,不过不是清空,我看了一下日志文件,感觉是能用一个批处理恢复的。那个日志文件的内容如下所示:

    宋卫平--为城市造好房子.doc|\.vdisk.cache\.del\20130916\66\7d\668e769e92aa5137a1276780d36ab97d_宋卫平--为城市造好房子.doc|668e769e92aa5137a1276780d36ab97d|2013-9-16 21:4:0|1379336640

    俄罗斯石油天然气战略的地缘取向.doc|\.vdisk.cache\.del\20130916\0a\a1\0ae00b5807968c621cde3f75a0aee6a1_俄罗斯石油天然气战略的地缘取向.doc|0ae00b5807968c621cde3f75a0aee6a1|2013-9-16 21:4:0|1379336640

    这个txt文件的记录大概一千多条,每条记录之间一个空行,如果靠纯手工的话,是特别特别累的一件事。

    看记录的第一部分,也就是在第一个“|”之前,是原本的文件名,在第一和第二个“|”之间的内容是文件被删除后的路径以及被改名后的文件名,第二个“|”后面的内容就没用了。

    所以能不能帮我写一段批处理命令,读取这个日志txt文件中的每条记录,移动第一和第二个“|”之间路径的文件到根目录,然后把这个文件名改名成第一个“|”之前的内容?

    这是两个管道符之间某一个文件的完整路径:E:\vdisk\我的微盘\.vdisk.cache\.del\20130916\00\9d\001983570804223dc21f4669f793f79d_发现数学 原来数学这么有趣.pdf,如果使用相对路径的话,应该不需要考虑前面的内容,只用两个管道符之间的内容就可以。但是有个问题,.del这个文件夹是只读,而且是不能修改的隐藏文件夹,不知道move这个命令是不是还能用。

    请帮我写一个批处理命令好吗?可以处理这种情况的。

    谢谢了。

    2013年9月17日 2:03

答案

  • 我把问题想复杂了,虽然批处理能很好地解决这个问题(适用性也可以更广)

    刚才我把.del文件夹搜索*.*,所有的文件都搜索出来,然后移动到某个文件夹(相当于移动日志中各种路径下的文件到根目录)

    然后看到这些文件的文件名都是一串英文数字最后加一个下划线,接原文件名,所以直接在totalcommander中ctrl+a,然后ctrl+m,查找*_,然后清除,所有的文件都回来了,而且是原文件名了,基本上1分钟就解决了......

    (如果所有的文件都不是在同一个根目录,而且所有的文件名如果都被随机命名了,比如没有了原文件名,只是一串毫无规律的数字字母标记的话,还是只能用批处理命令才能解决)

    所以虽然我现在遇到的问题解决了,不过还是希望能有人针对这个情况写一段批处理......

    • 已标记为答案 planningall 2013年12月16日 12:43
    2013年9月17日 3:33

全部回复

  • 我把问题想复杂了,虽然批处理能很好地解决这个问题(适用性也可以更广)

    刚才我把.del文件夹搜索*.*,所有的文件都搜索出来,然后移动到某个文件夹(相当于移动日志中各种路径下的文件到根目录)

    然后看到这些文件的文件名都是一串英文数字最后加一个下划线,接原文件名,所以直接在totalcommander中ctrl+a,然后ctrl+m,查找*_,然后清除,所有的文件都回来了,而且是原文件名了,基本上1分钟就解决了......

    (如果所有的文件都不是在同一个根目录,而且所有的文件名如果都被随机命名了,比如没有了原文件名,只是一串毫无规律的数字字母标记的话,还是只能用批处理命令才能解决)

    所以虽然我现在遇到的问题解决了,不过还是希望能有人针对这个情况写一段批处理......

    • 已标记为答案 planningall 2013年12月16日 12:43
    2013年9月17日 3:33
  • 先弄了个类似的环境,一句命令行就可以了。

    for /f "tokens=1,2 delims=^|" %%n in (log.log) do move ".%%o" "%%n"

    一个是log.log是日志文件,二是log.log所在为.vdisk.cache的父文件夹,就是E:\vdisk\我的微盘\log.log这样的意思。


    2015年1月23日 6:40