Windows 배치 파일에서 문자열을 연결하는 방법은 무엇입니까?
-
19-09-2019 - |
문제
나는 모든 것을 나열하고 싶은 디렉토리가 있습니다. .doc
a ;
.
다음 배치 명령은 모든 파일을 알고 있습니다.
for /r %%i In (*.doc) DO echo %%i
하지만 이제 나는 그들 모두를 변수에 넣고 싶습니다. ;
한 번에 그들 사이에 그들 사이에 반향을 일으킨다.
어떻게 할 수 있습니까?
set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
해결책
는 어때:
@echo off
set myvar="the list: "
for /r %%i in (*.doc) DO call :concat %%i
echo %myvar%
goto :eof
:concat
set myvar=%myvar% %1;
goto :eof
다른 팁
Rubens의 솔루션을 기반으로 ENV 변수의 지연된 확장 ( "Help Setlocal"또는 "Help CMD"를 유형하여 VAR이 루프에서 올바르게 평가되도록해야합니다.
@echo off
setlocal enabledelayedexpansion
set myvar=the list:
for /r %%i In (*.sql) DO set myvar=!myvar! %%i,
echo %myvar%
또한 다음 제한을 고려하십시오 (MSDN):
최대 개별 환경 변수 크기는 8192BYTES입니다.
변수입니다 @fname
또는 @ext
간단하게 연결할 수 있습니다. 이것:
forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"
모든 pdf 파일을 "filename_old.pdf"로 이름을 바꿉니다.
제휴하지 않습니다 StackOverflow