返回列表 发帖
本帖最后由 aloha20200628 于 2024-6-8 17:10 编辑


本帖楼主的原意是将多个子目录中的同名文件复制到目标目录时须作更名处理,其更名格式如 *(1).*,因源文件不包含类似 *(1).* 的文件,故解法要比另帖(http://www.bathome.net/thread-69152-1-1.html)来的轻快,但若假定源文件名可能包含 !&^ 等特殊字符时,其解法则须另辟捷径了》既要放弃延迟变量(以便兼容源文件名中的特殊字符),又要在循环中采用计数器(以便顺序匹配目标文件名),还要逃避复合语块中%n%变量的预处理...
@echo off &set "d1=c:\源目录" &set "d2=d:\目标目录"
pushd "%d2%"
for /f "delims=" %%a in (' dir /b/s/a-d "%d1%\*.txt" ') do (
if not exist "%%~nxa" (copy "%%a") else (
set/a "n=1" &set "F=%%a" &set "nF=%%~na" &set "xF=%%~xa"
(call :copy#n)
)
)
popd &pause &exit/b
:copy#n
if exist "%nF%(%n%)%xF%" (set/a "n+=1" &goto :copy#n)
copy "%F%" "%nF%(%n%)%xF%" &exit/bCOPY
1

评分人数

    • 77七: 感谢分享!很久没注意^字符了。技术 + 1

TOP

本帖最后由 aloha20200628 于 2024-6-9 00:11 编辑

回复 18# newswan

每家都有几曲乡愁,彼此彼此,一方水土养一方人,苦乐痛痒其实一脉相通...

TOP

返回列表