我需要將兩件東西寫入.bat
文件中,我正在爲一個小項目工作。首先,我必須知道是否包含在同一個文件夾中的任何文件名(遞歸),我啓動我的.bat
的長度超過100個字符。如果是這樣,我需要使它長92個字符並保留擴展名。從批處理文件中確定文件名長度
例如,我有該文件名:
IncrediblyLongFileNameIAmSorryForThisItLooksLikeSomeDamnSpamJesusIAintEvenCloseTo100yetalmostwaitforitYEAH.omg
上述文件名是110個字符。我需要保持的擴展,因此程序應將該文件重命名爲這樣:
IncrediblyLongFileNameIAmSorryForThisItLooksLikeSomeDamnSpamJesusIAintEvenCloseTo100yetalmos.omg
到目前爲止,我的主要問題是,我不知道如何在批文件名字符串的工作。我用這個代碼:
@echo off & setlocal enableextensions
FOR /R %%i IN (*.*) DO (
ECHO %%~nxi
FOR /f "delims=:" %%a in ('
^(echo."%%~nxi"^& echo.^)^|findstr /o .'
) DO set lenght=%%a-5
echo The length of "%%~nxi" is %lenght%
)
endlocal & goto :EOF
但我不能SET
一個FOR
裏面,它不能做基本的數學或者(即它不能做的-5
操作)。
第二件事,我相信一旦完成第一件事就會容易一些,就是比較文件夾中的所有文件名(再次遞歸),並確保沒有文件名是相同的。如果程序找到任何相同的文件名,則應該重新命名第二次以在末尾添加類似l1l
的內容。 (我不能在這裏使用小括號,因此我使用兩個l
來代替這個數字。)唯一需要注意的是文件擴展名,因爲我無法在文件擴展名之後添加任何內容,以免它們變得無法使用。
任何人都可以提供解釋如何做到這一點?我真的希望能夠自己解決這個問題,但我只是缺乏批量編程的經驗。
你應該把它分成兩個問題。 – Endoro
要「做基礎數學」試一下'set /?' 'set有一個參數'/ a',這個參數可以做到這一點。 – Stephan