求各位大神帮忙写个批处理脚本,exe 的也行

2014-09-05 14:49:35 +08:00
 me2you
要求如下:
A/B/C/*.*
现在在A文件夹中执行可执行程序

A下有多个文件夹(B的数量>=1),同样,B下有多个C文件夹(C的数量也>=1)

1.把B中的除文件夹以外的文件,删除掉
2.把C中的所有文件移动到B中,删除C文件夹(C文件夹已经空了)

昨天写了个php版本的,因为文件夹数量太大,三层遍历,执行效率很低,求大神出手帮忙~~
3638 次点击
所在节点    编程
17 条回复
14
2014-09-05 15:09:03 +08:00
你在Windows下跑php?
mahone3297
2014-09-05 15:13:02 +08:00
不就移动文件,跟php效率低有关系?
me2you
2014-09-05 15:20:50 +08:00
@mahone3297 循环多 慢啊
lichao
2014-09-05 15:24:37 +08:00
@me2you 这又不是计算密集型的程序,跟语言关系不大。你觉得慢,是因为磁盘 IO 的开销
binjoo
2014-09-05 16:57:47 +08:00
难道WIN下不能跑PHP?
20150517
2014-09-05 17:00:54 +08:00
powershell写啊,不难,10到20分钟最多了
royzheng
2014-09-05 17:12:51 +08:00
exe执行起来很快的 有.net framework可以帮你写一个
me2you
2014-09-05 17:26:13 +08:00
@14 难道你的win下不能跑???
me2you
2014-09-05 17:28:05 +08:00
@royzheng 那就麻烦你了 油桶 me2you#wanan.info
alex321
2014-09-05 17:32:16 +08:00
挂载到 linux 下面去 xx?
royzheng
2014-09-05 17:44:25 +08:00
@me2you 好的 稍等
ijse
2014-09-05 17:55:55 +08:00
```

@echo off
for /D %%i in (*) do (
@echo "Process(B): " %%i
erase /Q %%i

cd %%i
for /D %%j in (*) do (
@echo "Copy(C): " %%j
move %%j ..
)
cd ..

@echo "Remove(C)."
rmdir /Q %%i
)
pause
```

试着写了下,应该能用~~
royzheng
2014-09-05 18:07:04 +08:00
@me2you I'm sorry,快下班了,忘记考虑递归问题,C#里移动整个文件夹覆盖有点问题 你最好还是用批处理好
14
2014-09-05 18:43:24 +08:00
@me2you
@binjoo 我就随手一碎碎念,没有感情色彩。。。只是在潜意识里觉得都是跑着Linux之类平台,仔细想想自己以前玩过XAMPP
me2you
2014-09-06 00:22:56 +08:00
@14 只是为了把工作的方法简化,所以是在Windows上写的php
me2you
2014-09-06 00:25:58 +08:00
@ijse 先谢谢你的代码,我刚才测了下,和我说的要求有点出入,C文件夹都还在 而且还被移动到了A文件夹下了,空的C也没删除,有的B文件夹下还有C,并且C中的文件还存在,不过还是得谢谢你的代码
me2you
2014-09-06 00:27:59 +08:00
@royzheng 我当时PHP测试的时候只测了4个B文件夹和每个B下有3个C,C里面有7到8个文件的情况,用了半分钟差不多,上百个B层文件夹,一多起来就感觉不行了的样子

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/131912

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX