所以我的问题是我使用批处理文件来移动所有电影,图像等。我用它来组织一个超过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
答案 0 :(得分:0)
您始终可以在文件名前添加\\?\
以忽略文件名检查。 Windows支持最高32K的文件名。但是,程序往往只支持路径的总共260个字符(名称最多为255个字符)。
将您的名字写入文件然后读取文件大小,它将是文件名大小。