문제

나는 모든 것을 나열하고 싶은 디렉토리가 있습니다. .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"로 이름을 바꿉니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top