我正在處理一個需要暱稱(但要大寫)的 .bat 文件
set /p nickname="Please enter your uppercase name!:
我想知道我是否可以使蝙蝠存儲原始(大寫)暱稱和全小寫暱稱。
所以我可以這樣做
%nickname%\files\avatar\1.png
或者
%nickname_lowercase%\files\avatar\1.png
我不想向用戶詢問小寫暱稱,我只是希望它將用戶輸入的內容轉換為小寫並將其儲存在「集合」或其他內容中。有點複雜,抱歉沒能解釋清楚。
答案1
如何將變數的內容轉換為小寫?
使用以下批次檔:
SETLOCAL ENABLEDELAYEDEXPANSION
set /p nickname="Please enter your uppercase name!:
rem save the name, use "s in case there are space in the name
set "_UpperNick=nickname"
call LoCase nickname
set "_LowerNick=nickname"
echo _UpperNick
echo _LowerNick
ENDLOCAL
GOTO:EOF
:LoCase
:: Subroutine to convert a variable VALUE to all lower case.
:: The argument for this subroutine is the variable NAME.
SET %~1=!%~1:A=a!
SET %~1=!%~1:B=b!
SET %~1=!%~1:C=c!
SET %~1=!%~1:D=d!
SET %~1=!%~1:E=e!
SET %~1=!%~1:F=f!
SET %~1=!%~1:G=g!
SET %~1=!%~1:H=h!
SET %~1=!%~1:I=i!
SET %~1=!%~1:J=j!
SET %~1=!%~1:K=k!
SET %~1=!%~1:L=l!
SET %~1=!%~1:M=m!
SET %~1=!%~1:N=n!
SET %~1=!%~1:O=o!
SET %~1=!%~1:P=p!
SET %~1=!%~1:Q=q!
SET %~1=!%~1:R=r!
SET %~1=!%~1:S=s!
SET %~1=!%~1:T=t!
SET %~1=!%~1:U=u!
SET %~1=!%~1:V=v!
SET %~1=!%~1:W=w!
SET %~1=!%~1:X=x!
SET %~1=!%~1:Y=y!
SET %~1=!%~1:Z=z!
GOTO:EOF
答案2
對於預測字元集,該子字串Set !var:A=a!
有效,並且僅與預定義子字串在蝙蝠/指令。
對於此類任務,為什麼不尋求一些幫助C#,這使得可以使用非常規的重音和輔音è、È、ä、ä、ñ、Ñ、ç、Ç 等。
哪裡的蝙蝠/指令將生成C#程式碼,它將在運行時編譯並執行......
解決了可能的用戶輸入,其中序列帶有重音並且元音/輔音與傳統的不同[阿茲]和/或[A_Z]
觀察:- 還與帶空格的暱稱和/或與寫名字
@echo off && setlocal EnableDelayedExpansion
cd /d "%~dp0" && title <nul && title ...\%~dpnx0 /// !time:~0,8! !date!
set "_where=%__appdir__%where.exe" && set "_csc=%windir%\Microsoft.NET"
set "_findstr=%__APPDIR__%\findstr.exe" && del /q /f "%tmp%\ToUpLower.*" 2>nul >nul
>"%temp%\ToUpLower.cs"^
(
echo= using System; namespace SUQ1522019 ^{class Program ^{static void Main(string[] args^) ^{
echo= if (args.Length==2 ^&^& args[0].ToLower(^)=="-l"^) ^{Console.WriteLine(args[1].ToLower(^)^);^}
echo= if (args.Length==2 ^&^& args[0].ToLower(^)=="-u"^) ^{Console.WriteLine(args[1].ToUpper(^)^);^}^}^}^}
) && set "_arg=/t:exe /out:"%temp%\ToUpLower.exe" "%temp%\ToUpLower.cs" /platform:anycpu "
:loop
if exist "%temp%\ToUpLower.exe" goto :next
for /l %%L in (4 -1 2)do for /f "tokens=*" %%i in ('!_where! /r "!_csc!" csc.exe ^|!_findstr! /lic:"\v%%~L\."')do (
set "_compiller="%%~i" !_arg! /unsafe+ /w:0 /o /nologo" && call !_compiller! && set /p "_nick="Please enter nickname: "
if not "!_nick!"=="" (goto :next) else cls && goto :loop
)
:next
for /f tokens^=^*delims^=^" %%# in ('echo[!_nick!') do for /f tokens^=^*delims^=^" %%U in ('
call "%temp%\ToUpLower.exe" -u "%%#"')do set "_up_case_nick=%%~U" && for /f tokens^=^*delims^=^" %%l in ('
call "%temp%\ToUpLower.exe" -l "%%#"')do set "_low_case_nick=%%~l" ) else goto :loop
echo/ Your input nickname is: !_nick!
echo/ Your input upcase is: !_up_case_nick!
echo/ Your input lowcase is: !_low_case_nick!
echo/ >nul 2>nul copy "%tmp%\ToUpLower.exe" "."
del /q /f "%tmp%\ToUpLower.*" >nul 2>nul && endlocal & goto :EOF
- 輸入的輸出 ==
To Up Lower
Please enter nickname: To Up Lower
Your input nickname is: To Up Lower
Your input upcase is: TO UP LOWER
Your input lowcase is: to up lower
這ToUpLower.cs
C#沒有轉義的程式碼:
using System; namespace SUQ1522019 {class Program {static void Main(string[] args) {
if (args.Length==2 && args[0].ToLower()=="-l") {Console.WriteLine(args[1].ToLower());}
if (args.Length==2 && args[0].ToLower()=="-u") {Console.WriteLine(args[1].ToUpper());}}}}
這ToUpLower.cs
C#沒有轉義和縮排的程式碼:
using System
namespace SUQ1522019
{
class Program
{
static void Main(string[] args)
{
if (args.Length==2 && args[0].ToLower()=="-l")
{
Console.WriteLine(args[1].ToLower());
}
if (args.Length==2 && args[0].ToLower()=="-u")
{
Console.WriteLine(args[1].ToUpper());
}
}
}
}
- 這C#代碼是編譯/測試在
csc.exe
版本:
c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe
c:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
c:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe
c:\Windows\Microsoft.NET\Framework64\v3.5\csc.exe
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
- 這是命令列習慣編譯這C#代碼:
c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /t:exe /out:"%tmp%\ToUpLower.exe" "%tmp%\ToUpLower.cs" /platform:anycpu /unsafe+ /w:0 /o /nologo
ToUpLower.exe
用法 上到 -> 下
ToUpLower.exe -l STRING
:: if have space, use quote:
ToUpLower.exe -l "THIS STRING"
:: or ..
ToUpLower.exe -L STRING
:: if have space, use quote:
ToUpLower.exe -L "THIS STRING"
ToUpLower.exe
用法 下至 -> 上
ToUpLower.exe -u string
:: if have space, use quote:
ToUpLower.exe -u "this string"
:: or ..
ToUpLower.exe -U string
:: if have space, use quote:
ToUpLower.exe -U "this string"
為了保留ToUpLower.exe
, 消除echo/
從copy
命令:
迴聲/>nul 2>nul 複製“%tmp%\ToUpLower.exe”“。”
- 該命令列將複製
ToUpLower.exe
從%temp%
到運行bat的同一資料夾。
C# 程式設計指南:
- 編輯:此程式碼將使用以下順序找到的第一個 .Net Framework 來編譯 C# 原始碼:
c:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
c:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
c:\Windows\Microsoft.NET\Framework64\v3.5\csc.exe
c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe
c:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe
第二個選擇是新增/加入這
ToUpLower.exe
可執行於batch
文件,使用64位基數字串和運行時解碼。您可以使用什麼
%__APPDIR__%Certutil.exe
,可在 Windows 上使用。
觀察:- 還與帶空格的暱稱和/或與寫名字
@echo off && setlocal EnableDelayedExpansion
cd /d "%~dp0" && title <nul
title ...\%~dpnx0 /// !time:~0,8! !date!
del /q /f "%temp%\ToUpLower.exe" 2>nul >nul
%__APPDIR__%certutil.exe -f -decode "%~dpnx0" "%tmp%\ToUpLower.exe" 2>nul >nul
:loop
cls & echo/ & set /p "_nick="Please enter nickname: "
if not "!_nick!"=="" (
for /f tokens^=^*delims^=^" %%# in ('echo[!_nick!') do for /f tokens^=^*delims^=^" %%U in ('
call "%temp%\ToUpLower.exe" -u "%%#"')do set "_up_case_nick=%%~U" && for /f tokens^=^*delims^=^" %%l in ('
call "%temp%\ToUpLower.exe" -l "%%#"')do set "_low_case_nick=%%~l" ) else goto :loop
echo/ Your input nickname is: !_nick!
echo/ Your input upcase is: !_up_case_nick!
echo/ Your input lowcase is: !_low_case_nick!
echo/ 2>nul >nul copy /y "%tmp%\ToUpLower.exe" "."
del /q /f "%tmp%\ToUpLower.*" >nul 2>nul && endlocal & goto :EOF
rem :: Strings Base64 to decode in run time to generate/use the file: "%tmp%\ToUpLower.exe"
-----BEGIN CERTIFICATE----- TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUu
DQ0KJAAAAAAAAABQRQAATAEDAPztNl4AAAAAAAAAAOAAAgELAQgAAAYAAAAGAAAAAAAAHiUAAAAgAAAAQAAAAABAAAAg
AAAAAgAABAAAAAAAAAAEAAAAAAAAAACAAAAAAgAAAAAAAAMAQIUAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAA
ANAkAABLAAAAAEAAAKgCAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAAJAUAAAAgAAAA
BgAAAAIAAAAAAAAAAAAAAAAAACAAAGAucnNyYwAAAKgCAAAAQAAAAAQAAAAIAAAAAAAAAAAAAAAAAABAAABALnJlbG9j
AAAMAAAAAGAAAAACAAAADAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAAEgAAAACAAUAtCAA
ABwEAAABAAAAAQAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAgBPAAAA
AAAAAAKOaRgzIQIWmm8EAAAKcgEAAHAoBQAACiwNAheabwQAAAooBgAACgKOaRgzIQIWmm8EAAAKcgcAAHAoBQAACiwN
AheabwcAAAooBgAACioeAigIAAAKKgBCU0pCAQABAAAAAAAMAAAAdjIuMC41MDcyNwAAAAAFAGwAAAA0AQAAI34AAKAB
AABgAQAAI1N0cmluZ3MAAAAAAAMAABAAAAAjVVMAEAMAABAAAAAjR1VJRAAAACADAAD8AAAAI0Jsb2IAAAAAAAAAAgAA
AUdVAAAJAAAAAPoBMwAWAAABAAAACAAAAAIAAAACAAAAAQAAAAkAAAADAAAAAQAAAAEAAAABAAAAAAAKAAEAAAAAAAYA
OwA0AAYAaQBNAAYAhQBNAAYAtACUAAYA1ACUAAYAAQE0AAYAHAE0AAYARgE2AQAAAAABAAAAAAABAAEAAAAQABgAIAAF
AAEAAQBQIAAAAACRAEIACgABAKsgAAAAAIYYRwAQAAIAAAABAPwAEQBHABQAIQBHABoAKQBHABAAMQAIAR8AMQAQASMA
OQAkASkAMQAuAR8ACQBHABAAQQBHABAAJwBLAC4ALgATADMALgAbADwACAAGAFsABIAAAAAAAAAAAAAAAAAAAAAA8gAA
AAIAAAAAAAAAAAAAAAEAKwAAAAAAAAAAAAA8TW9kdWxlPgBUb1VwTG93ZXIuZXhlAFByb2dyYW0AU1VRMTUyMjAxOQBt
c2NvcmxpYgBTeXN0ZW0AT2JqZWN0AE1haW4ALmN0b3IAU3lzdGVtLlNlY3VyaXR5LlBlcm1pc3Npb25zAFNlY3VyaXR5
UGVybWlzc2lvbkF0dHJpYnV0ZQBTZWN1cml0eUFjdGlvbgBTeXN0ZW0uUnVudGltZS5Db21waWxlclNlcnZpY2VzAENv
bXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAVG9VcExvd2Vy
AGFyZ3MAU3RyaW5nAFRvTG93ZXIAb3BfRXF1YWxpdHkAQ29uc29sZQBXcml0ZUxpbmUAVG9VcHBlcgBTeXN0ZW0uU2Vj
dXJpdHkAVW52ZXJpZmlhYmxlQ29kZUF0dHJpYnV0ZQAABS0AbAABBS0AdQABAAAA1T5f5CmhU0i1Zns61KGndwAIt3pc
Vhk04IkFAAEBHQ4DIAABBSABARENBCABAQgDIAAOBQACAg4OBAABAQ4EAQAAAAgBAAgAAAAAAB4BAAEAVAIWV3JhcE5v
bkV4Y2VwdGlvblRocm93cwGAni4BgIRTeXN0ZW0uU2VjdXJpdHkuUGVybWlzc2lvbnMuU2VjdXJpdHlQZXJtaXNzaW9u
QXR0cmlidXRlLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
PWI3N2E1YzU2MTkzNGUwODkVAVQCEFNraXBWZXJpZmljYXRpb24BAPgkAAAAAAAAAAAAAA4lAAAAIAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAJQAAAAAAAAAAX0NvckV4ZU1haW4AbXNjb3JlZS5kbGwAAAAAAP8lACBAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAEAEAAAABgAAIAAAAAAAAAAAAAAAAAAAAEAAQAAADAAAIAAAAAAAAAAAAAAAAAAAAEAAAAAAEgA
AABYQAAATAIAAAAAAAAAAAAATAI0AAAAVgBTAF8AVgBFAFIAUwBJAE8ATgBfAEkATgBGAE8AAAAAAL0E7/4AAAEAAAAA
AAAAAAAAAAAAAAAAAD8AAAAAAAAABAAAAAEAAAAAAAAAAAAAAAAAAABEAAAAAQBWAGEAcgBGAGkAbABlAEkAbgBmAG8A
AAAAACQABAAAAFQAcgBhAG4AcwBsAGEAdABpAG8AbgAAAAAAAACwBKwBAAABAFMAdAByAGkAbgBnAEYAaQBsAGUASQBu
AGYAbwAAAIgBAAABADAAMAAwADAAMAA0AGIAMAAAACwAAgABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAA
AAAgAAAAMAAIAAEARgBpAGwAZQBWAGUAcgBzAGkAbwBuAAAAAAAwAC4AMAAuADAALgAwAAAAPAAOAAEASQBuAHQAZQBy
AG4AYQBsAE4AYQBtAGUAAABUAG8AVQBwAEwAbwB3AGUAcgAuAGUAeABlAAAAKAACAAEATABlAGcAYQBsAEMAbwBwAHkA
cgBpAGcAaAB0AAAAIAAAAEQADgABAE8AcgBpAGcAaQBuAGEAbABGAGkAbABlAG4AYQBtAGUAAABUAG8AVQBwAEwAbwB3
AGUAcgAuAGUAeABlAAAANAAIAAEAUAByAG8AZAB1AGMAdABWAGUAcgBzAGkAbwBuAAAAMAAuADAALgAwAC4AMAAAADgA
CAABAEEAcwBzAGUAbQBiAGwAeQAgAFYAZQByAHMAaQBvAG4AAAAwAC4AMAAuADAALgAwAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAwAAAAgNQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAA= -----END CERTIFICATE-----
- 命令列用於解碼這Base64歸檔
"%tmp%\ToUpLower.exe"
%__APPDIR__%certutil.exe -f -decode "%~dpnx0" "%tmp%\ToUpLower.exe" 2>nul >nul
抱歉我水平有限英語
答案3
將文字轉換為大寫:(字元限制 255)
for /f "tokens=2 delims=-" %i in ('find "" "lower case text" 2^>^&1') do set i=%i& echo !i:~1!
轉換為小寫:(字元限制 255)
type nul > "UPPER CASE"
dir /l /b "UPPER CASE"
或者
md al & cd al
echo:> "SOME LONG FILENAME in here"
dir /l /b
若要更改整個檔案的大小寫:
set case=upper
set file=line.txt
if exist out.txt del out.txt
for %i in (%file%) do set n=%~zi
fsutil file createnew A %n% >nul
fc /b A %file% | more +1 > B
type nul > A
for /f "tokens=3" %i in (B) do (
if %case%==lower (
if 0x%i gtr 0x40 (if 0x%i lss 0x5b (set /a a=0x%i+0x20 >nul) else set /a a=0x%i >nul) else set /a a=0x%i >nul
)
if %case%==upper (
if 0x%i gtr 0x60 (if 0x%i lss 0x7b (set /a a=0x%i-0x20 >nul) else set /a a=0x%i >nul) else set /a a=0x%i >nul
)
cmd /c exit /b !a! & set hex=!=exitcode:~-2!& set /p=!hex! <nul
) >> A
certutil -decodehex A out.txt
del A & del B
筆記:
exitcodeASCII
&forfiles
可以完成相同的任務,而且可能更快,用更多的程式碼來處理 TAB、SPACE、CR 和 LF。
在Win 10 cmd上測試
範例輸出:(來自out.txt)
原來的
一開始,還有時間。隨著時間從出現點開始擴散,不斷增加的空間中的真空壓力拉伸了將時間保持在零空間的能量,隨著真空中的溫度冷卻,能量聚集在一起的機會增加,從而在口袋中產生物質的地區比其他地區涼爽。
有些物質變得太大,以至於它開始吸引周圍的其他物質,從而再次提高其自身的溫度,並最終通過突然的超新星或緩慢的脈衝星和類星體輻射冷卻。這種加熱和冷卻最終穩定為共振,從而擊敗了宇宙中心的生命。
大寫
一開始,是有時間的。隨著時間從出現點開始擴散,不斷增大的空間中的虛空壓力拉伸了將時間保持在零空間的能量,增加了能量在真空冷卻時聚集在一起的可能性,從而產生口袋中的物質比其他地區涼爽的地區。
有些物質&><變得太大,以至於它開始吸引周圍的其他物質,從而再次升高它自己的溫度,並最終通過突然的超新星或慢脈衝星和類星體輻射冷卻。這種加熱和冷卻最終穩定下來,形成一種共振,擊敗了這個宇宙中心的生命。
小寫
一開始,還有時間。隨著時間從出現點開始擴散,不斷增加的空間中的真空壓力拉伸了將時間保持在零空間的能量,隨著真空中的溫度冷卻,能量聚集在一起的機會增加,從而在口袋中產生物質的地區比其他地區涼爽。
有些物質變得太大,以至於它開始吸引周圍的其他物質,從而再次提高其自身的溫度,並最終通過突然的超新星或緩慢的脈衝星和類星體輻射冷卻。這種加熱和冷卻最終穩定為一種共振,從而擊敗了宇宙中心的生命。
版權所有 ©,保留所有權利
提供的程式碼僅用於 stackexchange,不得在本網站之外發布。