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

时间:2015-02-22 22:13:47

标签: batch-file cmd command

所以我的问题是我使用批处理文件来移动所有电影,图像等。我用它来组织一个超过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 :(得分:0)

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

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