① 批處理(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