2013-07-23 168 views
1

我有一個Windows批處理文件,我正在運行它將特定文件移動到子文件夾中。將特定文件批量複製到子文件夾中

@ECHO OFF 
ECHO Start Copy 

setlocal enabledelayedexpansion 

set SOURCE_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in 
set DEST_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in\Files to Import 
set FILENAMES_TO_COPY=SN_Router_1.ipt SN_Router_2.ipt SN_Router_3.ipt 

for /R "%SOURCE_DIR%" %%F IN (%FILENAMES_TO_COPY%) do (
    if exist "%%F" (
     set FILE_DIR=%%~dpF 
     set FILE_INTERMEDIATE_DIR=!FILE_DIR:%SOURCE_DIR%=! 
    echo file "%%F" 
     xcopy /Y "%%F" "%DEST_DIR%!FILE_INTERMEDIATE_DIR!" 
    ) 
) 

ECHO. 
pause 

這是抄襲我的3個所需的文件到子文件夾,但隨後一直再持續和子文件夾創建一個子文件夾,複製3個文件到該subsubfolder,並且它重複了許多文件是在原始源文件夾。我只想複製3個文件以複製到目標文件夾並停在那裏。

任何人都可以發現問題嗎?我不知道足夠的批處理代碼來正確調試。

回答

2

如果你只是想將這些文件,然後複製這個可能適合你:

@ECHO OFF 
ECHO Start Copy 

set "SOURCE_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in" 
set "DEST_DIR=C:\Users\paul.ikeda\Support\SNDataDemo91\SolidCAD\Inventor_in\Files to Import" 
set "FILENAMES_TO_COPY=SN_Router_1.ipt SN_Router_2.ipt SN_Router_3.ipt" 

pushd "%SOURCE_DIR%" 
for %%F IN (%FILENAMES_TO_COPY%) do (
    echo file "%%F" 
    xcopy /Y "%%F" "%DEST_DIR%\" 
) 
popd 
ECHO. done 
pause 
+0

你好,這效果要好得多,但有我可以通過xcopy命令沒有參數提示如果目標是文件或文件夾?現在我得到提示「Does ... DEST_DIR ...在目標上指定一個文件名或目錄(F = File,D = Directory)?我總是選擇'd' – ikathegreat

+0

看我上面的編輯: \'%DEST_DIR%\「'會停止提示。 – foxidrive

+0

非常好,謝謝你的回答。 – ikathegreat

相關問題