求高手写一段批处理
要求:在搜索文件时会碰到放在不同目录下的相同名字的文件(全部都是一种类型的文件如“*.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
万山数据
2024-11-04 广告
2024-11-04 广告
实时数仓处理是我们北京万山数据科技有限公司数据处理能力的核心之一。它基于先进的流处理技术,能够实时捕获、处理和分析海量数据,确保数据的时效性和准确性。通过构建高效的实时数据管道,我们能够实现数据的即时入库与查询,为业务决策提供强有力的支持。...
点击进入详情页
本回答由万山数据提供
展开全部
为何不拿出点诚意
更多追问追答
追问
你写嘛,如果附加要求也能满足的话,追加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
)
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询