首页 文章

需要重命名将所有电影移动到特定文件夹文件的批处理文件

提问于
浏览
0

所以我的问题是我正在使用批处理文件移动所有电影,图像等 . 我用它来组织一个超过20GB的超大硬盘 . 所以一切都工作正常,直到我有一个新的硬盘驱动器 . 我收到文件错误,说文件名很长 . 所以我的想法是检查文件名是否超过250个字符,如果是,那么将文件重命名为仅200,只留下文件扩展名 . 我附上了我正在使用的当前代码,以使其成为可能 . 我的问题是如何使这成为可能 . 我想在if之前添加一个if命令,但是如果检查文件名中的字符却难以接受?任何帮助将不胜感激!

@echo off

setlocal EnableDelayedExpansion

set TESTFOLDER=L:\AllMovies
md "%TESTFOLDER%"

for /f "tokens=*" %%i in ('dir /s /ah /b /a-d L:\*.mov or L:\*.mp4') do (
  call :copyfile "%%~i"
) 

goto :eof

:copyfile
set fname=%~nx1
set counter=0

if not exist "%TESTFOLDER%\%dest%\!fname!" goto docopy

:recheck
if exist "%TESTFOLDER%\%~n1_!counter!%~x1" (
  set /a counter+=1
  goto recheck
)
set fname=%~n1_copy!counter!%~x1

:docopy
copy "%~1" "%TESTFOLDER%\%dest%\!fname!"

goto :eof

endlocal

1 回答

  • 0

    您始终可以将 \\?\ 添加到文件名以忽略文件名检查 . Windows支持最高32K的文件名 . 但是,程序往往只支持路径的总共260个字符(其中名称最多为255个字符) .

    将您的名字写入文件然后读取文件大小,它将是文件名大小 .

相关问题