2016-09-02 19 views
0

我是批量編程的絕對新手。我經過一些搜索後發佈了這個問題。請引導我。 我有一個包含一千個圖像的文件夾:基於部分名稱列表搜索文件,並使用Windows外殼將其複製到目標文件夾

000001_x_abc1.jpg 
000001_x_efg1.jpg 
000001_x_hij1.jpg 
000002_x_abc1.jpg 
000002_x_efg1.jpg 
000002_x_hij1.jpg 
. 
. 
. 
. 
234562_x_abc2.jpg 
234562_x_efg2.jpg 
234562_x_hij2.jpg 

論文文件我已經產生了,我需要根據部分名稱,即數字ID退出「文件列表」 - 第6個數值在文件名,例如234562 * .jpg並將它們複製到目標文件夾。

注意:每個基於數字ID的搜索應該給我3個文件,我需要複製全部三個文件。任何幫助,將不勝感激。

我試圖根據我的搜索下面的代碼:

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 

SET "DEST_DIR=my_desination" 
SET "SEARCH_DIR=my_source" 

FOR /F "tokens=*" %%a IN (%~dp0my_list.txt%) DO (
    FOR /R "%SEARCH_DIR%" %%f IN (*%%a*) DO (
     SET "SRC=%%~dpf" 
     SET DEST=!SRC:%SEARCH_DIR%=%DEST_DIR%! 
     xcopy /S /I "%%~f" "!DEST!" 
    ) 
) 

而我的列表文件如下:

002631_*.jpg 
054741_*.jpg 
054992_*.jpg 
055053_*.jpg 
055054_*.jpg 
055118_*.jpg 
055267_*.jpg 
055294_*.jpg 
055382_*.jpg 
055415_*.jpg 
055466_*.jpg 
055546_*.jpg 
+0

什麼'目的地folder'?當我理解正確的時候,你會需要很多。 – Stephan

+1

@Stephan,我需要根據包含部分名稱的列表搜索文件,並且需要將所有找到的文件(作爲搜索結果......可以遞歸)複製到目標文件夾中。 – jaycee4u

+0

他們全部進入相同的目的地? – Stephan

回答

0

包含完整的文件模式,每行一個,下面應該爲你工作:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

rem Define constants here: 
set "SOURCEDIR=D:\Data" 
set "TARGETDIR=D:\BackUp" 
set "LISTFILE=D:\files.lst" 

cd /D "%SOURCEDIR%" || exit /B 1 
for /F "usebackq delims= eol=|" %%L in ("%LISTFILE%") do (
    for /F "delims= eol=|" %%F in ('dir /B "%%L"') do (
     copy "%%~F" "%TARGETDIR%\%%~nxF" 
    ) 
) 

endlocal 
exit /B 
+1

我是否需要從我的文件名列表中刪除「下劃線」?目前,它是:055054_.jpg 是否需要將其更改爲:055054.jpg 查詢是因爲批處理文件報告未找到該文件。我錯過了什麼嗎? – jaycee4u

+0

不,我以爲列表文件只包含數字標識,比如'055054';現在自編輯問題並顯示真正的列表條目(如'055054 _ *。jpg')後,我相應地調整了我的答案...... – aschipfl

+1

非常感謝!這工作! – jaycee4u

1

這是特定的文件複製到的一個例子一個文件夾。

@ECHO OFF 
set "SOURCE_DIR=%userprofile%\Desktop\Source" 
set "DEST_DIR=%userprofile%\Desktop\Output" 
set "FILENAMES_TO_COPY=test.txt test1.txt test2.txt" 

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

腳本複製test.txttest1.txttest2.txt從文件夾Source,以假設的列表文件的文件夾Output

退房this

+1

感謝您的快速回復!我在包含這些部分名稱的txt文件。我如何提供,而不是名稱? – jaycee4u

0

(編輯以反映問題的更多信息)

for /f %%a in (partial.txt) do copy %%a "x:\destination folder\" 

在文本文件中的每個條目複製<entry from textfile>到目的地。

看到for /?更多細節

相關問題