2013-05-10 2 views
0

저는 일괄 적으로 스크립팅을하는 데있어서 매우 새롭습니다.Windows 배치의 특정 파일 이동 확장 프로그램

내 목표는 파일 이름은 같지만 확장자가 다른 파일을 이동하는 것입니다. 내가 myfile.txt.1와 '감동'MYFILE.TXT없이 myfile.txt.2을 이동하려는 등 나는 * 와일드 카드를 사용하는 관리했지만 그것은 논리적으로도 파일을 이동 하는 내가 돈 'T는 이동하려는. (즉 MYFILE.TXT를)

... 내가 파일을 계산하는 루프에 대한 을 사용하고 대신 *의 변수를 "계산"을 사용하여 생각하고 있었는데 내 질문하지만, 이 스크립트를 구현하는 더 직접적인 방법이 있습니까?

내 스크립트를 첨부 :

cd my_path 
mkdir test 
robocopy "src" "dest" "my_file.*" 
echo The file was moved succesfully !!!! 

답변

1

내가 robocopy 사용자의 요구를 처리 할 수 ​​있어야한다고 생각합니다.

와일드 카드 "my_file.txt.*"이 제대로 작동 할 것으로 예상했으나 흥미롭게도 .이 없더라도 여전히 my_file.txt과 일치합니다.

는 그러나 "꾸며지지 않은"파일 이름을 제외 할 /xf 옵션을 추가하는 것은 나를 위해 작동 :

robocopy "src" "dest" "my_file.txt.*" /xf "my_file.txt" 
+0

네, 그게 제가 실제로 한 일입니다 ... 오해 때문에 미안합니다. – HCL02

+0

흥미롭고, 맞습니다. 여전히 작동하지 않습니다. 나는'/ xf' 옵션을 추가하여 내 대답을 편집했습니다. –

+0

건배 Nate./xf를 포함하면 일괄 처리가 의도 한대로 작동합니다. 매우 감사합니다. – HCL02

0
@ECHO OFF 
SETLOCAL 

SET sourcedir=c:\sourcedir 
SET destdir=c:\destdir 
FOR %%i IN ("%sourcedir%"\*.*) DO (
FOR %%n IN ("%%~ni") DO IF NOT "%%~xn"=="" IF EXIST "%destdir%\%%~nxi" (
    ECHO CAN NOT MOVE "%%~fi" "%destdir%\%%~nxi" 
) ELSE (ECHO MOVE "%%~fi" "%destdir%\%%~nxi") 
) 

GOTO :EOF 

이 작업 AAUI을 수행해야한다. 또한 대상 디렉토리에서 충돌하는 파일 이름의 존재를 감지합니다. 테스트를 확인한 후에 ECHO MOVE에서 ECHO을 제거하기 만하면됩니다. 개인적으로 문제가 있다고보고하기 위해있는 ECHO CAN NOT MOVE을 그대로 남겨 두었습니다. MOVE으로 변경하면 기존 파일을 덮어 쓸 가능성이 있습니다.