① 批处理(bat),检测重复文件
@echo off
for /f %%i in ('dir /b "c:\hello"') do (for /f "delims=/ tokens=1-3" %%a in (C:\Users\helloworld\Desktop\a.txt) do if not "%%~ni"=="%%c" echo %%a//%%b/%
%c>>hello.txt)
rem 假设存放avi的文件夹完全路径为c:\hello
pause
rem 网络的排版有问题,自己注意排回版(别少、多出答空格)
② 如何用批处理搜索相同文件名,不同后缀名(后缀名数字),并删除小数字文件,保留后缀名最大数字的文件
不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件或文件夹放一起双击运行
<#:
cls&echooff&cd/d"%~dp0"
set#=Anyquestion&set_=WX&set$=Q&set/az=0x53b7e0b4
title%#%+%$%%$%/%_%%z%
set"self=%~f0"
powershell-NoProfile-ExecutionPolicybypass"[IO.File]::ReadAllText("%self%",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
echo;%#%+%$%%$%/%_%%z%
pause
exit
#>
$self=get-item-liter$env:self;
$path=$self.Directory.FullName;
$dic=New-Object'System.Collections.Generic.Dictionary[string,Object]';
$files=@(dir-literal$path|?{($self.Name-ne$_.Name)-and($_-is[System.IO.FileInfo])});
for($i=0;$i-lt$files.length;$i++){
$m=[regex]::match($files[$i].Name,'d+$');
if($m.Success){
$key=$files[$i].BaseName.toLower();
if(-not$dic.ContainsKey($key)){
[System.Collections.ArrayList]$arr=@();
$dic.add($key,$arr);
}
$brr=@($m.groups[0].value,$files[$i]);
[void]$dic[$key].add($brr);
}
}
foreach($itin$dic.Keys){
$crr=@($dic[$it]|sort{1*$_[0]}-Descending);
$crr[0][1].Name;
}
③ 批处理 如何批量替换不同文件夹中相同文件名文件
可以使用批处理脚本实现批量替换不同文件夹中相同文件名文坦正件,具体步骤如下:
将B文件夹内的10个文件复制到A文件夹的根目录下。
使用for命令遍历A文件夹内的所有子目录,找到同名的文件,并将其替换为B文件夹中的文件。
具体代码如下:
@echo off
setlocal enabledelayedexpansion
set srcFolder=A
set dstFolder=B
REM 将B文件夹内的10个文件复制到A文件夹的根目录下
%dstFolder%* %srcFolder% /Y
REM 遍历A文件夹内的所有子物雀目录
for /r %srcFolder% %%i in (*) do (
REM 判断是否存在同名文件
if exist "%dstFolder%\%%~nxi" (
REM 替换同名文件
/Y "%dstFolder%\%%~nxi" "%%i"
)
)
echo 替换完成!
pause
注意,以上代码中的srcFolder和dstFolder变量需要根据实际情况修改为对应的文件夹路径让蚂悔。
④ 如何用批处理判断不同目录下的两个文件的文件名相同
不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI
@echo off
rem 检测判断两个文件夹里是否存在相同名称的文件
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
set "folder1=D:\xxx\A"
set "folder2=D:\xxx\B"
set isexist=false
for /f "delims=" %%a in ('dir /a-d/b "%folder1%\"') do (
if exist "%folder2%\%%~nxa" (
echo;"%folder1%\%%~nxa" ^<--^> "%folder2%\%%~nxa"
set isexist=true
)
)
echo;%isexist%
echo;%#% +%$%%$%/%@% %z%
pause
exit