나는 다음과 같이 프로그램을 검색하고 싶다.명령 : 프로그램 및 변수 디렉토리 검색
cd "C:\"
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)
첫 번째 문제 : 모든 하드 드라이브를 검색 할 수있게하고 싶다. ('cd 내 컴퓨터'또는 이와 비슷한 것?)
즉, 해당 프로그램이있는 디렉토리의 변수를 만들어야합니다.
어떻게 배치/cmd에서 할?
나는 다음과 같이 프로그램을 검색하고 싶다.명령 : 프로그램 및 변수 디렉토리 검색
cd "C:\"
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)
첫 번째 문제 : 모든 하드 드라이브를 검색 할 수있게하고 싶다. ('cd 내 컴퓨터'또는 이와 비슷한 것?)
즉, 해당 프로그램이있는 디렉토리의 변수를 만들어야합니다.
어떻게 배치/cmd에서 할?
이 스크립트는 전체 경로를 출력합니다 :
@echo OFF
for %%D in (c,d,e) do (
If exist %%D:\ (
for /f "delims=" %%f in ('dir /b /s %%D:\%1 2^> NUL') do (
@echo %1 found: %%~dpf
)
)
)
%%~dpf
이 발견 된 각 사건에 대한 파일의 경로를해야합니다 (하나 이상있을 수 있습니다). 당신이이 경로에 따라 행동해야하는 경우 당신은 몇 가지 옵션이 있습니다 :
파일의 전체 경로를 포함하는 변수로 %%~dpf
를 사용하여 @echo %1 found: %%~dpf
라인 후 파일 처리 명령을 추가합니다.
임시 텍스트 파일 (@echo %%~dpf >> temp.out
)에 경로를 쓴 다음 다시 다른 for
루프를 읽어서 처리하십시오.
경로를 로컬 환경 변수 (set FILE_PATHS=!FILE_PATHS!;%%~dpf
)에 연결 한 다음 다른 for
루프에서 해당 var을 처리하여 처리하십시오.
"cd C : \"에 문제가 있습니다.이 드라이브는 C : 드라이브에있는 경우에만 작동하지만 다른 드라이브에있는 경우에는 작동하지 않습니다. 그에 대한 해결책은 먼저 드라이브의 편지를 작성하는 것입니다 simpliest 방법이이 방법을 수행하는 것입니다 :
for %%D in (c,d,e,f,g,h,i,j,k,l,m,o) do (
%%D:
cd %%D:\
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)
)
다음은 모든 드라이브를 검색합니다. 사용할 수도 있습니다
for %%D in (c,d,e,f,g,h,i,j,k,l,m,o) do (
If exist %%D:\ do (
%%D:
cd %%D:\
for /f "delims=" %%f in ('dir /b /s myprogram.exe') do (
)
)
)
희망이 있습니다. 파일이 발견되는 경우
'cd/d %% D :'; '/ d' 스위치는 디렉토리 외에도 지정된 드라이브로 변경됩니다. 명령 줄에서'cd /?'를 입력하여'/ d' 스위치가 여러분의 OS에서 지원되는지 확인하십시오. –
그러나 myprogram이 위치한 디렉토리의 변수를 만드는 방법은 무엇입니까? –
두 번째 코드에서 %% f는 "myprogram.exe"의 경로 (예 : "D : \ folder \ myprogram.exe")로 바뀝니다. "% ~ pf"(인용 부호가 붙어 있기 때문에 ~를 꺼내어 경로의 인용 부호가없는 공백이 코드에 혼란을 일으킬 수 있습니다) 폴더를 요청합니다 (예 : "E : \ Path \ To \ MyProgFolder " 여기에 진짜 문제는, 당신은 일반적으로 코드 내에서 변수를 할당 할 수 없다는 것입니다. 거기에"setlocal enabledelayedexpansion "코드가 있지만, 저는 정말로 권장하지 않습니다. 제 해결책은/임시 파일을 읽거나 인수로 다른 박쥐 파일로 리다이렉트 –
두 번째로 나는 단지 그 다음에 'for'에 'set /p=
'temp.out' 파일에 대해 또 다른'for/f' 루프가 필요합니다. –