0
我想批量裁剪文件名的如:從「這IsGood 1.1.png」到「tig11.png」轉換文件名
的條件是腳本應該得到所有大寫字母從文件名稱,將它們轉換成小寫字母,然後形成修剪後的文件名稱中沒有任何空格...
請幫我完成此任務.. 謝謝!
我想批量裁剪文件名的如:從「這IsGood 1.1.png」到「tig11.png」轉換文件名
的條件是腳本應該得到所有大寫字母從文件名稱,將它們轉換成小寫字母,然後形成修剪後的文件名稱中沒有任何空格...
請幫我完成此任務.. 謝謝!
你可以用一個簡單的迭代開始對文件名
set str=This IsGood 1.1
:again
set chr=%str:~0,1%
set str=%str:~1%
if not "%chr%"=="" echo %chr%
if not "%str%"=="" goto :again
閱讀HELP SET
,HELP IF
和HELP GOTO
現在,如果將其理解,通過改變echo
命令爲呼叫進行...
if not "%chr%"=="" call :checkchar %chr%
...
:checkchar
echo %1
goto :eof
閱讀HELP CALL
然後實現實際的代碼檢查,如果字符爲大寫或不
:checkchar
for %%c in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do if .%1==.%%c echo %%1
goto :eof
閱讀HELP FOR
改變現在這種新echo
命令到一個新的調用一個函數來設置變量爲小寫
現在將結果連接成變量,例如fn
變量,您需要初始化爲空白。
並用適當的文件名處理全部換行,只提取文件名(參見處理參數語法中的〜n選項),然後用新名稱回寫完整路徑(使用〜d〜p〜x選項)
@echo off
set fn=
call :upcaseonly %~n1
echo %~dp1%fn%%~x1
goto :eof
:upcaseonly
set str=%*
:again
set chr=%str:~0,1%
set str=%str:~1%
if not "%chr%"=="" call :checkchar %chr%
if not "%str%"=="" goto :again
goto :eof
:checkchar
for %%c in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do if .%1==.%%c set fn=%fn%%1
goto :eof
以此爲出發點。你將不得不添加自己的邏輯來重命名文件並處理文件是否已經存在,或者文件不能被重命名......
你可以使用一個'FOR/L'循環來檢查每個字符或者你的位置失敗了嗎? – jeb 2012-04-14 12:35:41
如果現有名稱只包含小寫字母,那麼您將得到...? – dbenham 2012-04-14 12:36:08
如果JohnDoe.txt和JoyDivision.txt存在於同一個文件夾中,您會得到...? – dbenham 2012-04-14 13:01:40