返回列表 发帖
本帖最后由 aloha20200628 于 2025-1-25 11:35 编辑

回复 1# lj670

以下代码(任选一个方案)存为 test.bat 运行,与 *.mp3 或 *.srt 文件同目录
前缀 ‘m(n)-’ 中的 m 和 n 值均用命令行参数设定,例如 test.bat 3 2 用法会与楼主要求的 3(2).bat 等效,命令行参数不足会自动退出 ...
第一方案
  1. @echo off &if "%~2"=="" (exit/b) else set "p=%~1(%~2)-"
  2. for %%F in (*.mp3 *.srt) do for /f "delims=-" %%a in ("%%~nF") do if /i "%%a-" neq "%p%" ren "%%F" "%p%%%~nxF"
  3. pause&exit/b
复制代码
第二方案
  1. @echo off &if "%~2"=="" (exit/b) else set "p=%~1(%~2)-"
  2. for /f "delims=" %%F in ('dir /b/a-d *.mp3 *.srt^|findstr /ibv "%p%" ') do ren "%%F" "%p%%%~nxF"
  3. pause&exit/b
复制代码

TOP

本帖最后由 aloha20200628 于 2025-1-25 09:11 编辑

回复 3# lj670

2楼代码已订正》改为 m,n 两个命令行参数驱动,运行结果等效于对应的 m(n).bat 批处脚本...

TOP

本帖最后由 aloha20200628 于 2025-1-25 11:07 编辑

回复 1# lj670

再给一个版本存为 test-n.bat,其命令行参数用法为 test-n.bat m 其中参数 m 如 ‘m(n).bat’ 文件名格式中的定义,示例如下
   test-n.bat 3
运行结果会在当前目录下生成 3(1).bat,3(2).bat,...,3(20).bat 共20个批处脚本文件,其生成文件总数量(n 的最大值)由代码第三行括号中的数字 20 设定(可自定义)
  1. @echo off &if "%~1"=="" (set "p=1") else (set "p=%~1")
  2. setlocal enabledelayedexpansion &set "c3=%%%%~nxF"
  3. for /l %%n in (1,1,20) do (
  4.   set "c1=%p%(%%n)\-"
  5.   set "c2=%p%(%%n)-"
  6.   set "s=@for /f "delims=" %%%%F in ('dir /b/a-d *.mp3 *.srt^^|findstr /ibv "!c1!" ') do @ren "%%%%F" "!c2!!c3!""
  7.   set/p="!s!"<nul>"%p%(%%n).bat")
  8. pause&exit/b
复制代码
1

评分人数

    • lj670: 感谢分享技术 + 1

TOP

返回列表