返回列表 发帖
回复 1# annwayili

以下代码须用 utf-8 编码存为 test.bat 运行,假设代码运行前当前目录中还没有名如 *(n).mp4 的文件(n=1,2,3,...)
@echo off &chcp 65001>nul &setlocal
for %%F in (*.mp4) do if exist "%%~nF.txt" (
   set "s=" &set/p s=<"%%~nF.txt" &setlocal enabledelayedexpansion
   if exist "!s!%%~xF" (ren "%%F" "!s!1%%~xF") else ren "%%F" "!s!%%~xF"
   if exist "%%F" ren "%%F" "%%~nF-重命名失败%%~xF"
   endlocal) 2>nul
pause&exit/bCOPY

TOP

本帖最后由 aloha20200628 于 2025-1-29 11:03 编辑

回复 5# annwayili

   大年初一拜完年抽空给楼主回个帖   ...
   根据5楼附图中的红圈结果推断4楼代码中的 set/p ... 读取文本文件首行时撞上了空行,故其返回值为空值... (仍须楼主确认),如属实,删除对应文本文件中的第一个空行就是了
   或改用以下有防空读取对策的代码(须用utf-8编码存盘)再试试
@echo off &chcp 65001>nul &setlocal
for %%F in (*.mp4) do if exist "%%~nF.txt" (
   for /f "tokens=1* delims=:" %%a in ('findstr /v "^$" "%%~nF.txt"^|findstr /n ".*"^|findstr /b "1:" ') do set "s=%%b"
   setlocal enabledelayedexpansion
   if exist "!s!%%~xF" (ren "%%F" "!s!1%%~xF") else ren "%%F" "!s!%%~xF"
   if exist "%%F" ren "%%F" "%%~nF-重命名失败%%~xF"
   endlocal) 2>nul
pause&exit/bCOPY
2

评分人数

TOP

返回列表