hjlelele 发表于 2008-11-5 15:59

【求助】bat题目

求收集某个文件夹中所有子目录中的某一类型文件移动到另一个指定目录的写法
e.g.我D盘下面有很多音乐文件散布在各个文件夹中,我需要统一起来剪切到另一个我想要的文件夹中

小松鼠 发表于 2008-11-5 16:11

@echo off
xcopy d:\aaa\*.mp3e:\bbb/s /a
del d:\aaa\*.mp3    /s /q

[ Edited by小松鼠 on 2008-11-5 16:59 ]

sy100 发表于 2008-11-5 16:57

这个方便,学习了!

ycren 发表于 2008-11-5 16:57

回复 #2 小松鼠 的帖子

强,学习了^,^

Feiyue_2008 发表于 2008-11-5 23:36

这样是不好用的~!

[ Edited byFeiyue_2008 on 2008-11-5 23:39 ]

bush-911 发表于 2008-11-5 23:44

2楼的有意思,学习下。
另外,请教下后面的参数S、A、Q是啥意思

fems 发表于 2008-11-6 00:44

命令后加参数"/?"就能看到解释了
例如xcopy /?

hjlelele 发表于 2008-11-6 02:16

我尝试写了一下,但是出现了一些问题,看看谁找的出来,其中我把copy改成copy,因为刚开始只是主体代码的时候我不小心把c盘的一些文件移出来了,所以后面又加了禁制在C:\移动文件
----------------
@echo off
:begin
set /p path1=请输路径
set /p type=请输入文件后缀名或者文件名
set /p path2=请输入转移后的路径

::禁制在C:\移动文件或输入空字符
if /i "%path1%"=="c:\" (
goto begin
) else (
   if /i "%path1%"=="" (
    goto error2
   ) else (
cd %path1%
)

::如果是根目录则直接复制,如果路径中含有文件夹名择判断是否新建文件夹
if not exist %path2% md %path2%

::搜索文件主代码
if exist %path1% (
for /r %%a in (%type%) do (
copy "%%a" %path2%
)
) else (
goto :error2
)
goto finished

:error1
echo 建议您不要移动C:\下的文件,任意键a开始 & pause>nul
goto begin

:error2
echo 路径错误 & pause>nul
goto begin

:finished echo 文件移动结束,任意键退出 move & pause>nul

[ Edited byhjlelele on 2008-11-6 02:25 ]

bolu 发表于 2008-11-6 03:08

能用windows自带的search么?

hjlelele 发表于 2008-11-9 14:55

-------------------------------经过ywgnom指点,终于明白了,修改后便可以用了
@echo off
:begin
set /p path1=请输路径

::禁制在C:\移动文件或输入空字符
if /i "%path1%"=="c:\"goto begin
if /i "%path1%"=="" (goto error1) else cd %path1%

set /p type=请输入文件后缀名或者文件名
set /p path2=请输入转移后的路径

::如果是根目录则直接复制,如果路径中含有文件夹名择判断是否新建文件夹
if not exist %path2% md %path2%

::搜索文件主代码
if exist %path1% (
for /r %%a in (%type%) do (
copy "%%a" %path2%
)
) else (
echo you input an error paths & goto began
)
goto finished

:error1
echo 建议您不要移动C:\下的文件,任意键a开始 & pause>nul
goto begin

:finished echo 文件移动结束,任意键退出 move & pause>nul
页: [1]
查看完整版本: 【求助】bat题目