2012-07-03 2 views
0

는 cmd를 할 수있는 공간이있는 경우/F 명령의 사용 방법 : 무엇을 달성하려고하는 것은 그 찾을 수있는 배치 파일파일이에 문제 가지고, 내가 새로 온

md "C:\kysumicomp" 
for /f "usebackq" %%a in (`CALL DIR /b /s "C:\Program Files" ^| FIND "javac.exe"`) do 
    copy "%%a" "C:\kysumicomp" 
pause 

입니다 javac.exe 파일을 C : \ kysumicomp에 복사합니다. 그러나 절대 경로가 아니길 바래 야합니다. 자바 업데이트가 일괄 처리를 계속 수행하는 경우.

What I am trying to achieve is a batch file that that will find the javac.exe file then copy it to C:\kysumicomp...

나는 당신이 일을과 복잡함을 것 같아요 :

+2

이 질문에 java라는 태그가 붙은 이유는 무엇입니까? –

+1

@TedHopp 스크립트에'javac.exe'라는 파일이 있기 때문에 의심됩니다! : P –

답변

1

는 흠 ... (질문의 제목에도 불구하고) 당신의 진짜 문제가 될 것으로 보인다.

은이합니다 (/R 옵션에 대한 자세한 내용은 FOR /? 참조)보십시오 :이에 문제가 (다른 덮어 쓰기, 디렉토리에 하나를 javac.exe모든 차례 나오는 복사됩니다

FOR /R "%ProgramFiles%" %%a IN (.) DO (
    IF EXIST "%%~a\javac.exe" COPY /Y "%%~a" C:\kysumicomp\ 
) 

참고하여 원래 솔루션도). 첫 번째 히트 후 중지하려면, 당신은 초기에 루프를 종료해야합니다

FOR /R "%ProgramFiles%" %%a IN (.) DO (
    IF EXIST "%%~a\javac.exe" (
     COPY "%%~a" C:\kysumicomp\ 
     GOTO END 
    ) 
) 
:END 

마지막으로, 간단한 해결책이 PATH에있는 javac.exe을 복사하는 기준에 수도가 제공된다. 당신이있는 거 질문 제목이 이미 당신이 달성하려고하는 내용과 일치하지 않기 때문에 당신이 정말 완전히 완전히 다른 무언가를해야하는 경우

FOR %%a IN (javac.exe) DO (
    IF EXISTS "%%~$PATH:a" (
     COPY "%%~$PATH:a" C:\kysumicomp\ 
    ) 
) 

다음, 나는 궁금하다. 처음에 javac.exe을 디렉토리에 복사하는 이유는 무엇입니까?

+0

난 여전히 동일한 오류가 나타납니다 : C : \> "C : \ Program" "C : \ kysumicomp"복사 시스템이 지정된 파일을 찾을 수 없습니다. – Kysumi

+0

어떤 버전을 사용해 보셨습니까? –

0

이것은 당신이 for /f에서

@echo off 
md "C:\kysumicomp" 
for /r "C:\Program Files" %%a in (*.*) do (
if %%~nxa==javac.exe (
rem Found it! 
xcopy /h /y "%%a" "C:\kysumicomp" 
exit >nul 
) 
) 
rem Done 
exit >nul 
1

기본 필드의 구분이 필요로하는 공간과 탭 문자가 무엇인지해야한다. 문제를 해결하려면 구분 기호를 다시 정의해야합니다. delims=을 경로 안에 절대 나타나지 않는 문자와 함께 사용하십시오 (예 : |). 또 다른 문제가 있습니다. 디렉토리 c:\Program Files\javac.exe\이 있다고 가정 해보십시오. 코드는 해당 디렉토리 내의 모든 파일을 C : \ kysumicomp로 복사합니다. 하지만 당신이 정말로 find를 사용하지 않아도, dir는 충분하다 :

md "C:\kysumicomp" 
for /f "delims=| usebackq" %%a in (`dir /b /s "C:\Program Files\javac.exe"`) do (
    copy "%%a" "C:\kysumicomp" 
) 
pause 

기독교의 솔루션으로도 좋은, 나는 변경할 수있는 유일한 것은 copy의 파일 이름을 포함하는 것입니다 믿습니다

FOR /R "%ProgramFiles%" %%a IN (.) DO (
    IF EXIST "%%~a\javac.exe" (
    COPY "%%~a\javac.exe" "C:\kysumicomp" 
    GOTO END 
) 
) 
:END 
관련 문제