Как преобразовать значение %USERNAME % к нижнему регистру в рамках сценария пакетной обработки Windows?

Здесь есть 2 вопроса. 1. Вы используете -> loadRowList (), который представляет собой метод, предназначенный для возврата массива строк (т.е. нескольких строк), а не того, который подразумевается в предложении where , и 2. Вместо использования Нативные функции PHP, попробуйте вместо этого использовать класс Joomla JRegistry.

Для решения этих вопросов:

1 Так как вы ожидаете, что будет возвращена только 1 строка (поле с идентификатором 19), замените вашу строку:

$result = $db->loadRowList();

на Результат

$result = $db->loadResult();

$ будет содержать только столбец , поле , столбец , .

2 Создайте экземпляр класса JRegistry, чтобы мы могли получить доступ к парам ключ => значение:

// new registry
$registry = new JRegistry();
$registry->loadString($result); // load the string from the db

// if you need an array, use jregistry's toArray method
$arrayData = $registry->toArray();

Надеюсь, это поможет,

Gez

11
задан Nano Taboada 12 November 2008 в 18:04
поделиться

2 ответа

быстрый Google нашел это...

@echo off
goto :end_remarks
*************************************************************************************
*
*
*    authored:Sam Wofford
*    Returns lowercase of a string
*    12:13 PM 11/13/02
**************************************************************************************
:end_remarks
setlocal
set errorlevel=-1
if {%1}=={} echo NO ARG GIVEN&call :Help &goto :endit
if {%1}=={/?} call :Help &goto :endit
call :set_LCASE_array 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

:start
set input=%1
set input=%input:"=%
set totparams=0
call :COUNT_PARAMS %input%
call :MAKE_LOWERCASE %input%
set errorlevel=
echo %convertedstring%
endlocal
goto :eof
:endit
echo %errorlevel%
endlocal
goto :eof

:MAKE_LOWERCASE
:nextstring
if {%1}=={} goto :eof
set string=%1
set /a params+=1
set STRINGCONVERTED=
set pos=0
:NEXT_CHAR
set onechar=%%string^:^~%pos%,1%%
for /f "tokens=1,2 delims==" %%a in ('set onechar') do for /f %%c in ('echo %%b') do call :checkit %%c
if not defined STRINGCONVERTED goto :NEXT_CHAR
shift /1
if %params% LSS %totparams% set convertedstring=%convertedstring% &:add one space,but not at end
goto :nextstring
goto :eof

:Help
echo USAGE:%~n0 string OR %~n0 "with spaces"
echo function returns the lowercase of the string or -1 (error)
echo strings with embedded spaces needs to be in quotes Ex. "lower case"
echo in a batch NTscript "for /f %%%%A in ('lcase STRING') do set var=%%%%A"
set errorlevel=
goto :eof

:checkit
set LCFOUND=
if /i {%1}=={echo} set STRINGCONVERTED=Y&goto :eof
set char=%1
for /f "tokens=2 delims=_=" %%A in ('set LCASE_') do call :findit %%A %char%
:skipit
if defined LCFOUND (set convertedstring=%convertedstring%%ucletter%) else (set convertedstring=%convertedstring%%char%)
set /a pos+=1
goto :eof

:set_LCASE_array
:setit
if {%1}=={} goto :eof
set LCASE_%1_=%1
SHIFT /1
goto :setit

:findit
if defined LCFOUND goto :eof
set ucletter=%1
set lcchar=%2
if /i {%ucletter%}=={%lcchar%} set LCFOUND=yes
goto :eof

:COUNT_PARAMS
:COUNTPARAMS
if {%1}=={} goto :eof
set /a totparams+=1
shift /1
goto :COUNTPARAMS 

добавьте, что как файл (lowercase.cmd) к Вашему пути и необходимо смочь назвать его как "% Lowercase.cmd %Username", Вы могли передать его по каналу в другую команду в случае необходимости.

8
ответ дан 3 December 2019 в 02:03
поделиться

загрузите некоторые утилиты Unix для DOS из http://short.stop.home.att.net/freesoft/unix.htm и используйте tr.exe (переведите символы),

echo %USERNAME% | tr "[A-Z]" "[a-z]" 

Я также использую DOS расширенная cmd замена, названная 4 нт, который имеет созданный в команде @lower

echo %@lower[%USERNAME%]
5
ответ дан 3 December 2019 в 02:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: