一个文件夹下有很多文件,其中有些文件文件名相同,但是后缀名不同,还有一些文件只有单独的一个后缀名

哪位高手能编一个批处理文件,将这些有相同文件名但后缀不同的文件提取出来,保存到一个新的文件夹中,原文件夹仍保留原来的所有文件。一定要是批处理文件。谢谢了
哪位高手能编一个批处理文件,将这些有相同文件名但后缀不同的文件提取出来,保存到一个新的文件夹中,原文件夹仍保留原来的所有文件。一定要是批处理文件。谢谢了
但是 所需处理文件有版本号区分 类似 12.asm.1 12.drw.2

这个可以,但实在是很麻烦,要在批处理里面分析和处理字符串是件很让人头疼的事.给个思路你自己研究吧.
用FOR /R循环枚举指定目录的*.*文件
将取到的文件名存入一个变量nm(不带扩展名的,需要将字符串拆分).
用下一个文件名和这个变量文件名(都是不带扩展名的)对比,如果相同,
MOVE "%%nm.*" "目标位置"
再修改nm变量的值为下一个文件名
可能出问题的部分在于FOR /R返回结果是否按文件名排序,我在我电脑上简单试了下,应该是排序的.追问

可以把程序写好么,就贴在回答里,谢谢了。

追答

写好了,打算怎么谢我??? 然后我再考虑是不是把代码贴上来
看来有人比我手快了,呵呵,但我不认为他是正确的

追问

你先贴上来看看 如果正确 我追加奖励分数 哈哈 行不行啊

追答

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
SET a=E:\WebRoot\ASPSite\temp\a
SET b=E:\WebRoot\ASPSite\temp\b
SET n=
FOR %%i IN ("%a%\*.*") DO (
IF "!n!"=="%%~ni" (
COPY "%%~di%%~pi%%~ni.*" "%b%" >> NUL
)
SET n=%%~ni
)
算了,不逗你了,本来打算让你帮我增加点快盘空间的

追问

我这里的文件貌似还有版本号 的问题 如果 这样两个文件 123.asm.1 123.drw.2 能不能也把他们放到文件夹下

追答

这个可太麻烦了,实在是没空研究.

追问

大哥,帮帮忙吧,我弄不出来要被炒鱿鱼的。。。

追答

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET a=E:\WebRoot\ASPSite\temp\a
SET b=E:\WebRoot\ASPSite\temp\b
SET n=
SET t=
FOR %%i IN ("%a%\*.*") DO (
IF "!n!"=="%%~ni" (
COPY "%%~di%%~pi%%~ni.*" "%b%" >> NUL
)
CALL :getv %%~ni !n!
IF "!n!"=="!t!" (
REM ECHO "%%~di%%~pi!n!*.*"
COPY "%%~di%%~pi!n!*.*" "%b%" >> NUL
)
SET n=%%~ni
)
goto :eof

:getv
set n=%~n1
set t=%~n2
goto :eof
简单的测试了一下,可以使用,但我不能保证文件名中带点的其它情况也好用.
变量A后面改成你的源目录,变量B后面改成你的目标目录

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-11
如果自己指定文件名,还是可以做到的

copy 指定文件名.* d:\
第2个回答  2011-10-11
假设原文件夹为g:\test,目标文件夹为g:\bat,本批处理
将会把g:\test文件夹下(包括子目录)所有同名不同后缀的文件拷贝到g:\bat目录下
且按照不同名字建立相应的文件夹,同名文件就放在对应名称的文件夹内

代码如下:

set SrcFolder=g:\test

set DesFolder=g:\bat

for /f "delims=" %%a in ('dir "%SrcFolder%\*.*" /a-d /b /s') do (
md "%DesFolder%\%%~na" 2>nul
xcopy /y "%%a" "%DesFolder%\%%~na" 2>nul
)追问

这个好象不能用 麻烦在想想 能不能有更好的办法

第3个回答  2011-10-11
这个不好弄。!
相似回答