Как получить имя текущей папки в нижнем регистре в качестве переменной в cmd? - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь получить имя текущей папки в виде в нижнем регистре .

Я понимаю, что могу получить имя текущей папки с помощью следующего:

for %I in (.) do echo %~nxI

но я понятия не имею, как преобразовать это в нижний регистр.

Мне нужно использовать его в однострочной команде.

для% I in (.) do echo% ~ nxI

Что я после:

c:\Program Files
for %I in (.) do echo %~nxI ---edited
program files

В настоящее время получаю

c:\Program Files
for %I in (.) do echo %~nxI
Program Files

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Используя чистую партию, с временным файлом:

Одна строка cmd:

@for %i in (.) do echo>"%temp%\%~nxi" & @dir /b /l "%temp%\%~nxi" & @del /Q "%temp%\%~nxi"

или batch-file

@echo off
for %%i in (.) do set "var=%%~nxi"
echo>"%temp%\%var%"
for /f "delims=" %%a in ('dir /b /l "%temp%\%var%"') do echo %%a & del /Q "%temp%\%var%"

или немного корочебез эха:

@echo off
for %%i in (.) do (
  echo>"%temp%\%%~nxi"
  dir /b /l "%temp%\%%~nxi"
  del /Q "%temp%\%%~nxi"
)
1 голос
/ 23 октября 2019

Вот метод, использующий dir /b /l, но в отличие от ответ Герхарда , без использования временного файла.

Из командной строки:

for %A in (.) do @for /f "eol=: delims=" %F in ('dir /b /l /ad "..\%~nxA*"^|findstr /xic:"%~nxA"') do @echo %F

Внутри пакетного сценария:

@echo off
for %%A in (.) do for /f "eol=: delims=" %%F in (
  'dir /b /l /ad "..\%%~nxA*" ^| findstr /xic:"%%~nxA"'
) do echo %%F
0 голосов
/ 23 октября 2019

Если вы работаете на поддерживаемой платформе Windows, она будет иметь PowerShell.

powershell -NoLogo -NoProfile -Command "(Split-Path -Leaf -Path (Get-Location)).ToLower()"

Если вы хотите получить результат в переменной в скрипте .bat file:

FOR /F "delims=" %%A IN ('powershell -NoLogo -NoProfile -Command "(Split-Path -Leaf -Path (Get-Location)).ToLower()"') DO (SET "LCCD=%%~A")
ECHO %LCCD%

Конечно, если бы вы могли использовать PowerShell без cmd.exe, это было бы просто:

(Split-Path -Leaf -Path (Get-Location)).ToLower()
...