2017-11-23 5 views
0

DIR의 출력을 변수에 저장해야합니다.배치 - 변수에 DIR 출력 쓰기

here 또는 here 또는 here입니다.

그들은 모두 내가 지금 사용하고 무엇을 더 많거나 적은 유사한 답변을 제공합니다

%= Find the *.sln file and write its path to the file temp.temp =% 
DIR /s/b *.sln > temp.temp 

%= Read out the content of temp.temp again to a variable =% 
SET /p texte=< temp.temp 

%= Remove the temp.temp file =% 
DEL temp.temp 

%= Get only the filename without path =% 
FOR %%A IN ("%texte%") DO (
    SET Name=%%~nxA 
) 

을하지만 내 경우에는 내가 DIR /s/b *.sln의 OUPUT가에 allways 한 줄 것이라고 확신. 내게는 조금 추한 것 같아.
a) 외부 파일에 출력하고,
b) FOR 루프를 실행한다. 이미 하나의 줄만 알고있을 것이다.

직접/간단한 방법이 있습니까?

답변

0
for /f "delims=" %%a in ('dir /s /b *.sln') do set "name=%%a" 

실제로 가장 효율적인 방법이다 (당신이 직접 명령의 출력, 임시 파일에 대한 필요를 처리 할 수 ​​있습니다). (하나 더있는 경우, 또는 파일의 마지막)
%name%

+0

'delims'은 결국 나는'texte' 권리라는 변수 전체 자격을 갖춘 파일 파일의 이름을 포함 할 것인가? 그리고 나는 여전히'name = %% ~ nxA'를 사용하여 파일명을 얻을 수 있다고 생각합니다. – derHugo

+0

'delims ='delim을 "구분 기호 없음"으로 설정합니다. 기본적으로'for/f'는'tokens = 1'과 공백, 쉼표, 탭의 구분자로 처리됩니다. 표준에 남겨두면 출력의 맨 처음 단어를 줄 것이다 : 명령 행에서 직접 시도'/ for % a in ("hello world") do @echo % a'vs'for/f "delims ="% a in ("hello world") do @echo % a' – Stephan

+0

예 :'? '%% a'는'%% A '가 아닙니다. – Stephan