求高手写一段批处理
要求:在搜索文件时会碰到放在不同目录下的相同名字的文件(全部都是一种类型的文件如“*.dwg”),想把这些文件重新拷到一个新目录下,若遇相同名字的,就在保留原名字的基础上...
要求:在搜索文件时会碰到放在不同目录下的相同名字的文件(全部都是一种类型的文件如“*.dwg”),想把这些文件重新拷到一个新目录下,若遇相同名字的,就在保留原名字的基础上再加个数字序号以区别。
以上是我的基本要求,如果有办法的话最好能将文件的创建时间与添加的序号对应起来,比如说一个叫“工程图.dwg”,的文件,放在了不同目录下共3个,最后拷出变成“工程图(1).dwg;工程图(2).dwg;工程图(3).dwg”。这个(1)是最先创建的那个文件,(2)是接下来创建的,(3)是最后创建的。这条是附加的要求,如果实在不好做就算了。
说得有点啰嗦谢谢各位高手耐心看完要求,本人不识代码还望高手把代码中可以修改的部分说明一下。不胜感激。 展开
以上是我的基本要求,如果有办法的话最好能将文件的创建时间与添加的序号对应起来,比如说一个叫“工程图.dwg”,的文件,放在了不同目录下共3个,最后拷出变成“工程图(1).dwg;工程图(2).dwg;工程图(3).dwg”。这个(1)是最先创建的那个文件,(2)是接下来创建的,(3)是最后创建的。这条是附加的要求,如果实在不好做就算了。
说得有点啰嗦谢谢各位高手耐心看完要求,本人不识代码还望高手把代码中可以修改的部分说明一下。不胜感激。 展开
3个回答
展开全部
基本要求容易,附加要求很麻烦呢
更多追问追答
追问
楼上也说基本要求容易,可我试了,他那段没效果啊,你能不能帮帮忙吗?
追答
呵呵楼上没认真看你的提问,这帮你写了一个,加_001 _002....序号的,不过时间顺序是以最后编辑时间算的,应该可以吧(以创建时间为序还要麻烦一些)
@echo off&setlocal enabledelayedexpansion
::下面 d1=搜索范围,多个用空格分隔,本身名中有空格加引号; d2=目标文件夹名,会自动新建;
:: fx=后缀名,如有多个用空格分隔 dw=序号固定位数
set d1="C:\Documents and Settings" d:
set d2=D:\tem\xjwj\bak
set fx=*.dwg *.doc
set/a dw=3
echo 正在搜索...&set/p= tem.yky
if not exist "%d2%" md "%d2%"
for %%a in (%d1%)do if exist "%%a\" (cd/d "%%a\"
set/p= !cd! ... >"%~dp0tem.yky"
))
cd/d "%d2%\"&set/a n=0
echo/&echo 正在复制文件
for /f "delims=" %%a in ('sort "%~dp0tem.yky"')do call :yky %%a
if "!n!"=="0" (copy "!np!\!na!!nx!" >nul)else (
set/a n+=1
set nn=0000000!n!
set nn=!nn:~-%dw%!
copy "!np!!na!!nx!" "!na!_!nn!!nx!" >nul)
echo/&echo 复制完成,按任意键退出...&pause>nul
del "%~dp0tem.yky"&endlocal
goto :eof
:yky
echo %~4%~1%~2
if "%~1%~2"=="!na!!nx!" (set/a n+=1
set nn=00000000!n!
set nn=!nn:~-%dw%!
copy "!np!!na!!nx!" "!na!_!nn!!nx!" >nul
set na=%~1&set nx=%~2&set "np=%~4"
)else (if "!n!"=="0" (
if defined na copy "!np!!na!!nx!" >nul
)else (set/a n+=1&set nn=00000000!n!&set nn=!nn:~-%dw%!
copy "!np!!na!!nx!" "!na!_!nn!!nx!" >nul)
set n=0&set na=%~1&set nx=%~2&set "np=%~4")
goto :eof
展开全部
为何不拿出点诚意
更多追问追答
追问
你写嘛,如果附加要求也能满足的话,追加20,谢谢哈。
追答
又见yyykkkyyyy ,我还是不写了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
setlocal enabledelayedexpansion
set p=d:\gct
set b=d:\backup
md %b% 2>nul
pushd %p%
for /f %%i in ('dir/s/b *.dwg') do (
set n+=1
ren "%%i" "%b%\%%~ni_!n!.%%~xi"
)
先试试吧,附加要求也不难,这个好用了再说。
setlocal enabledelayedexpansion
set p=d:\gct
set b=d:\backup
md %b% 2>nul
pushd %p%
for /f %%i in ('dir/s/b *.dwg') do (
set n+=1
ren "%%i" "%b%\%%~ni_!n!.%%~xi"
)
先试试吧,附加要求也不难,这个好用了再说。
更多追问追答
追问
不行啊,光是创建了一个叫“backup”的文件夹,而没有实现复制文件的功能。
追答
不好意思,近两天比较忙,没有比较整得时间调试,先来个不排序的,你先试试,随后就弄排序
@echo off
setlocal enabledelayedexpansion
set p=d:\gct
set b=d:\backup
set x=☆
md %b% 2>nul
cd i:\test\x
for /f %%i in ('dir/s/b %p%\*.dwg') do (
if exist %b%\%%~ni%%~xi (
for /f "tokens=2 delims=%x%." %%j in ('dir/b %b%\%%~ni*%%~xi') do set /a n=%%j
set /a n+=1
copy "%%i" "%b%\%%~ni%x%!n!%%~xi"
)
if not exist %b%\%%~ni%%~xi copy "%%i" %b%&&echo %b%
)
popd
终于在快下班弄好了,来不及合在一块了。需要再追问吧
@echo off
setlocal enabledelayedexpansion
set p=d:\backup
pushd %p%
for /f "delims=☆" %%i in ('dir/b %p%\*☆1.dwg') do (
set n=
for /f "tokens=1* delims=☆" %%j in ('dir/b/od/tc %p%\%%i*.dwg') do (
set /a n+=1
if "%%k"=="" (ren %%j %%~nj_!n!.dwg) else ren %%j☆%%k %%j_!n!.dwg
)
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询