本帖最后由 dos大帝 于 2021-11-9 12:41 编辑
- @echo off & setLocal enableDelayedExpansion
- pushd "D:\dos\test\A"
- for /f "delims=" %%i in ('dir /b /a-d "*.csv" 2^>nul ^| findstr /b "[0-9]"') do if "%%~xi" == ".csv" call :number "%%i" 1
- popd
- pushd "D:\dos\test\B"
- for /f "delims=" %%i in ('dir /b /a-d "*.txt" 2^>nul ^| findstr /b "[0-9]"') do if "%%~xi" == ".txt" call :number "%%i" 0
- popd
- goto ending
- :number
- set name=%~n1
- for /l %%j in (0,1,256) do (
- set sub_s=!name:~%%j,1!
- echo !sub_s!|findstr "[^0-9]" >nul && (
- set prefix=!name:~0,%%j!
- if %2 equ 1 (
- set "_!prefix!=1"
- ) else (
- if defined _!prefix! copy "%1" "D:\dos\test\C"
- )
- goto :eof
- )
- )
- goto :eof
- :ending
- pause
复制代码 回复 9# 娜美
你之前题意说不会重复, 这我就没管, 现在代码会记录A文件夹里csv文件开头的数字, 在B文件夹中发现相同的txt文件就将B中的复制到C
至于卡的问题, 基于dos的call和两个循环中不能退出里面循环继续外面循环的机制, 暂时没有什么好的办法 |