
使用批处理命令判断,如果有在同一文件夹下有两个同名文件,则后一个文件自动加数字后缀 20
我编写了一个bat批处理,解决桌面文件乱的问题,将桌面文件(除了系统自带的“我的电脑”之类的)使用move命令转移到一个固定文件夹M中,已经可以实现,但是有一个问题,遇到...
我编写了一个bat批处理,解决桌面文件乱的问题,将桌面文件(除了系统自带的“我的电脑”之类的)使用move命令转移到一个固定文件夹M中,已经可以实现,但是有一个问题,遇到第二次及以后再运行该批处理,遇到同名文件,则无提示自动覆盖,可能会造成意想不到的损失。在此请教高手帮忙添加判断后移动进指定文件夹的文件如a.txt与M文件夹中同样存在的a.txt进行比较,如果内容不相同,则将后进入M文件夹的a.txt改名,后面加序号或者执行命令的日期都可以。不要简单告诉我使用if、ren语句,我是菜鸟,请给出具体判断和更名语句,万分感谢!还要考虑以后每次都可能遇到的同名文件,比如第二次a.txt改名成a2.txt,那么第三次如果有a.txt,就必须避免再改成a2.txt了,所以可能需要使用变量之类的。给出我已经写好的代码,请高手补充:
@echo off
color 2f
title Wa-清爽桌面
mode con lines=2 cols=32
echo.
echo 正在转移桌面文件到桌面文件包……
move "%USERPROFILE%"\桌面\*.* "%USERPROFILE%"\桌面\桌面文件包
move "%USERPROFILE%"\桌面\桌面文件包\*.lnk "%USERPROFILE%"\桌面\
exit 展开
@echo off
color 2f
title Wa-清爽桌面
mode con lines=2 cols=32
echo.
echo 正在转移桌面文件到桌面文件包……
move "%USERPROFILE%"\桌面\*.* "%USERPROFILE%"\桌面\桌面文件包
move "%USERPROFILE%"\桌面\桌面文件包\*.lnk "%USERPROFILE%"\桌面\
exit 展开
1个回答
展开全部
个人认为加个时间戳是最可靠可行的办法,现有a.txt, 若文件包中已有a.txt 则命名a.txt 为
a_%data%_%time%.txt
这样保证了文件的唯一性,
代码如下:
@echo off&setlocal enabledelayedexpansion
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set hours=%time:~0,2%
set min=%time:~3,2%
set sec=%time:~6,2%
set var=%year%%month%%day%_%hours%%min%%sec%
set mess="%USERPROFILE%"\桌面\桌面文件包\"
set desktop="%USERPROFILE%"\桌面\"
for /f "tokens=*" %%a in ('dir /a-d /b !desktop!') do (
set "fn=%%a"
set "fnb=%%~na"
set "fnf=%%~xa"
if "!fnf!" neq ".bat" (
if exist "!mess!!fnb!!fnf!" (
ren "!fn!" "!fnb!_!var!!fnf!"
move "!fnb!_!var!!fnf!" "!mess!"
)else (
move "!fn!" "!mess!"
)
)
)
pause
更多追问追答
追问
运行后说无法找到文件?
追答
@echo off&setlocal enabledelayedexpansion
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set hours=%time:~0,2%
set min=%time:~3,2%
set sec=%time:~6,2%
set var=%year%%month%%day%_%hours%%min%%sec%
set mess="%USERPROFILE%\桌面\桌面文件包\"
set desktop="%USERPROFILE%\桌面\"
for /f "tokens=*" %%a in ('dir /a-d /b !desktop!') do (
set "fn=%%a"
set "fnb=%%~na"
set "fnf=%%~xa"
if "!fnf!" neq ".bat" (
if exist "!mess!!fnb!!fnf!" (
ren "!fn!" "!fnb!_!var!!fnf!"
move "!fnb!_!var!!fnf!" "!mess!"
)else (
move "!fn!" "!mess!"
)
)
)
pause
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询