如何將%name%
更改爲適當的案例或標題案例並將其存儲在另一個變量中?批量更改用戶輸入正確的案例
我已經搜索了所有的stackoverflow和所有接受的答案我不明白,因爲這是我的第一批文件。
@echo off
set /p name= Name:
mkdir %name%
如何將%name%
更改爲適當的案例或標題案例並將其存儲在另一個變量中?批量更改用戶輸入正確的案例
我已經搜索了所有的stackoverflow和所有接受的答案我不明白,因爲這是我的第一批文件。
@echo off
set /p name= Name:
mkdir %name%
這是一個非常簡單的腳本,可以將文本轉換爲大寫文本,因此每個單詞都以大寫字母開頭,其他地方都有小寫字母。假設批處理文件名爲capitalise.bat
,請提供文本作爲命令行參數,如下所示:capitalise.bat "tHIS is SOME sAmplE teXt"
,因此將返回爲This Is Some Sample Text
。以下是代碼:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "TEXT=%~1"
set "$BUF="
setlocal EnableDelayedExpansion
for %%L 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) do (
set "TEXT=!TEXT:%%L=%%L!"
)
endlocal & set "TEXT=%TEXT%"
call :CAPITALISE %TEXT%
echo(%$BUF:~1%
endlocal
exit /B
:CAPITALISE
if "%~1"=="" exit /B
set "WORD=%~1"
setlocal EnableDelayedExpansion
set "CHAR=!WORD:~,1!"
>&2 echo(!CHAR!
for %%L 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) do (
if /I "!CHAR!"=="%%L" set "CHAR=%%L"
)
>&2 echo(!CHAR!
for /F "delims=" %%K in ("!$BUF! !CHAR!!WORD:~1!") do (
endlocal
set "$BUF=%%K"
)
shift /1
goto :CAPITALISE
exit /B
請注意,這不能正確處理所有特殊字符。如字分離器,標準令牌隔板SPACE,TAB,,
,;
,=
和非休息空間(0xFF
)採取。大於0x7F
的字符在大小寫字母中不會更改。
製作防彈腳本非常困難,它可以處理所有(特殊)字符,代碼頁以及純粹的batch-file中的一組自定義字詞分隔符,因此我選擇保持簡單。
使用最明顯的方法是使用字符串替換:
SET name=%name:A=a%
SET name=%name:B=b%
...
SET name=%name:Y=y%
SET name=%name:Z=z%
另一種選擇是遍歷所有的換人,使其更加緊湊:
FOR %%i IN ("A=a" "B=b" ... "Y=y" "Z=z") DO CALL SET "name=%%name:%%~i%%"
隨着同樣的系統你可以做標題案例:
set "name= %name%"
FOR %%i IN (" A= a" " B= b" ... " Y= y" " Z= z") DO CALL SET "name=%%name:%%~i%%"
set "name=%name:~1%"
使用額外的空格時,只有起始字符被替換。
感謝@aschipfl他的更正和補充!
我認爲有一些'%'符號缺失:'do call set「name = %% name:%%〜i %%」';請注意,第一個單詞前面沒有空格,因此您應該在循環之後設置「name =%name%」'和'set「name =%name:* =%」'... – aschipfl
Wouldnt最後一個刪除一切,直到最後一部分沒有空間? – geisterfurz007
最後一個會刪除一切,包括第一個空格。由於第一行在文本之前有一個空格,所以最後一行再次有效地刪除該空格;你也可以編寫'set'name =%name:〜1%''代替(刪除第一個字符)... – aschipfl
[將用戶輸入的第一個字母作爲批處理腳本中的首字母]的可能副本(http://stackoverflow.com/questions/4107905/make-the-first-letter-of-user-input-a-資本批處理腳本) – Alejandro
http://www.robvanderwoude.com/battech_convertcase.php – Richard
只需添加以下內容作爲您的第二行'echo WARNING鍵入的條目區分大小寫' – Compo